1
我是嘲笑新手。我查看了mock模块,并了解如何使用修补程序修饰器来模拟特定的方法或模块。如何模拟一个模块,但不是其中的所有方法?
为了嘲笑一个模块在一个单一的方法,一种方法做的是:
@mock.patch('module1.method1')
def test_val(self, mock_method1):
mock_method1.return_value = "whatever_i_want"
为了嘲笑在同一模块中的多个方法,我可以这样做:
@mock.patch('module1.method2')
@mock.patch('module1.method1')
def test_val(self, mock_method1, mock_method2):
mock_method1.return_value = "whatever_i_want"
mock_method1.return_value = "whatever"
我想要的是嘲笑模块中的一些方法,并保持其他模式。如果我嘲笑整个模块,那么模块中的每个方法或属性都会被模拟。因此,我可以用任何方法模拟整个模块(只保留特定的方法),而不是像上面所示的那样分别模拟多个方法。
请问您可以发布您正在测试的代码吗?您可以对其进行重构,以便测试可以直接使用测试配置的对象调用它,从而允许您覆盖单个方法或w/e。你在寻找一个黑名单方法来嘲笑一个对象吗? – dm03514
@ dm03514对不起,我无法发布我的代码。不,我正在寻找一个白名单方法(模拟模块中的所有方法,除了几个所需的方法) –