在 Python 3.6 中使用不带 self 的assertRaises

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)

MrB*_*men 8

另一种可能性是使用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)