1 回答
TA贡献1876条经验 获得超5个赞
我认为你需要这样做:
class PatchMeNotTests(unittest.TestCase):
@classmethod
@patch('patch_me_not.patch_me', lambda x: None)
def setUpClass(cls):
print('I am the setUpClass.')
patch_me_not('setUpClass')
@patch('patch_me_not.patch_me', lambda x: None)
def setUp(self):
print('I am the setUp.')
patch_me_not('setUp')
def test_print(self):
print('I am the test')
patch_me_not('test_print')
修补您的测试用例不起作用,因为当patch应用于TestCase它时仅修补测试方法或更具体:以可配置前缀开头的方法,patch.TEST_PREFIX默认值为"test". 这就是为什么您的解决方案不起作用的原因。
这是来自 unittest 文档的相关引用
Patch 可以用作 TestCase 类装饰器。它通过装饰类中的每个测试方法来工作。当您的测试方法共享一个通用补丁集时,这会减少样板代码。patch() 通过查找以patch.TEST_PREFIX.开头的方法名称来查找测试 。默认情况下,这是'test',它与 unittest 查找测试的方式相匹配。您可以通过设置指定替代前缀 patch.TEST_PREFIX。
添加回答
举报