在没有方法调用的情况下模拟Python对象



想象一个这样的类:

class Foo():
def method_1(self):
bar = Bar()
bazz = Bazz(bar)
return bazz.method_2()

对于单元测试,当我们从不调用Bar对象上的任何方法,只是将其作为参数传递给Bazz构造函数时,我们如何模拟它?(是的,这并不理想,但这种模式可以在通过依赖注入将不同对象连接在一起的顶级类中找到(。

当您执行:bar = Bar()时,您确实调用了Bar对象,因此您可以轻松地模拟它:

mock_bar = mocker.MagicMock(name='Bar')
mocker.patch('foo.Bar', new=mock_bar)
# mock_foo.return_value = the new mocked object

最新更新