How to raise an exception in pytest?
我在views.py中编写了一个代码
1 2 3 4 5 | def fun(): try: --Do some operation-- except OSError: --Do something else-- |
我编写了一个测试用例来涵盖代码的总功能。 为了测试"除外"部分,我编写了以下代码,它将引发"OSError",
1 2 | with pytest.raises(OSError): response = client.post(reverse('my_views_funurl'), follow=True) |
但是,我收到了这个错误
1 2 | response = client.post(reverse('my_views_funurl'), follow=True) E Failed: DID NOT RAISE |
如何引用"OSError"来覆盖测试用例中的除外部分。
顺便说一句,我使用的是django-framework
最好的办法可能就是模拟方法来抛出你需要的异常,而不是经历实际创建
1 2 3 4 5 6 7 8 9 10 11 | 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 |
现在正如我所说,它只是一个玩具示例,所以对于您自己的具有不同结构的项目而言,您很可能需要一些不同的设置(鉴于您提供的信息,很难知道它的外观如何)。 例如,如果您希望某个调用会在