我在www.example.com上写了一段代码views.py
def fun():
try:
--Do some operation--
except OSError:
--Do something else--
我写了一个测试用例来覆盖代码的全部功能。为了测试“except”部分,我写了下面的代码,它将引发“OSError”,
with pytest.raises(OSError):
response = client.post(reverse('my_views_funurl'), follow=True)
但是,我得到这个错误
response = client.post(reverse('my_views_funurl'), follow=True)
E Failed: DID NOT RAISE
如何引发“OSError”来覆盖测试用例中的except部分。顺便说一下,我正在使用django-framework
2条答案
按热度按时间iovurdzv1#
最好的方法可能是模拟方法来抛出你需要的异常,而不是经历所有的麻烦,实际上创建条件,在其中抛出
OSError
。一个玩具例子:现在,正如我所说的,这只是一个玩具的例子,所以对于您自己的项目与不同的结构和所有您将最有可能需要一点不同的设置(根据您提供的信息,很难知道它的确切外观)。例如,如果您期望某个调用将在
fun()
中抛出OSError
异常,然后你需要在fun()
所在的模块中模拟调用。开始阅读模拟的好地方:1.文档快速指南
1.修补程序文档(特别注意"修补位置“部分)
1.由于它比我的概念验证示例要复杂一些,因此它可能与您尝试实现的内容类似。
e4yzc0pl2#
使用“pytest”的正确方法是将“side_effect”参数提供给patch(),并附带预期的Exception。示例: