在Python3.6中,我使用unittest.mock.patch
来修补如下函数:
class SampleTest(TestCase):
@mock.patch('some_module.f')
def test_f(self, mocked_f):
f()
mocked_f.assert_called()
这将一个mock.MagicMock()
作为mocked_f
传递,一切正常。但是,当我想使用自定义模拟对象而不是使用new
参数的默认mock.MagicMock()
时,补丁装饰器不会将模拟对象传递给test_f
方法。运行此代码将引发TypeError
:
TypeError: test_f() missing 1 required positional argument: 'mocked_f'
我的问题是:为什么会这样?在
根据文件(重点是我的):
在显式使用
new
的情况下,decorator不会将模拟对象作为参数传递(可能是因为它希望您已经拥有一个无需参数即可使用的引用)。在在这种情况下,一种解决方法是在mock通过测试后配置它:
相关问题 更多 >
编程相关推荐