Joy*_*Joy 7 python python-unittest
我想在我的 python 文件之一中测试一种失败场景,如下所示:
来源.py
def myfunc():
a()
Run Code Online (Sandbox Code Playgroud)
相关测试.py
def testMyFuncException():
a = Mock()
a.side_effect = MyError
with self.assertRaises(MyError) as _ : <--- THIS LINE I CANNOT USE self.assertRaises
..
Run Code Online (Sandbox Code Playgroud)
但在这里我不能使用 self,因为它不与任何类关联。所以我没有得到任何关于如何做到这一点的线索。
编辑
我现在按照建议做了如下:
def testMyFuncException(TestCase):
a = Mock()
a.side_effect = MyError
with TestCase.assertRaises(MyError) as _ :
...
Run Code Online (Sandbox Code Playgroud)
现在我收到错误如下:
E fixture 'TestCase' not found
Run Code Online (Sandbox Code Playgroud)
另一种可能性是使用pytest而不是单元测试。在这种情况下,您不需要单独的测试类:
import pytest
from unittest.mock import Mock
def test_myfunc_exception():
a = Mock()
a.side_effect = MyError
with pytest.raises(MyError, match="my exception message"):
...
Run Code Online (Sandbox Code Playgroud)