我在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”以覆盖测试用例中的除外部分。 顺便说一句,我使用的是django-framework
答案 0 :(得分:0)
最好的办法可能就是模拟方法来抛出你需要的异常,而不是经历实际创建OSError
抛出的条件的所有麻烦。玩具示例:
from unittest.mock import Mock
def something():
...
something = Mock(side_effect=OSError('Your error text'))
>>> something()
>>> Traceback (most recent call first):
>>> ...
>>> OSError: Your error text
正如我所说,这只是一个玩具示例,因此对于您自己的具有不同结构的项目而言,您很可能需要一些不同的设置(根据您提供的信息,很难知道它的外观如何)。例如,如果您希望某个调用会在OSError
内引发fun()
异常,那么您需要在fun()
所在的模块中模拟调用。好地方开始阅读嘲笑: