所以,主要问题在标题上。我试图找出python mock模块是否使用依赖注入模式来模拟对象调用是否正确。python模拟模块是否通过依赖注入工作?
我不熟悉DI模式,但是从我读过的和我在调试器中看到的mock
模块发行版看起来像mock()使用DI。
我是对的,模拟()是DI还是我错过了这种模式和嘲讽?
所以,主要问题在标题上。我试图找出python mock模块是否使用依赖注入模式来模拟对象调用是否正确。python模拟模块是否通过依赖注入工作?
我不熟悉DI模式,但是从我读过的和我在调试器中看到的mock
模块发行版看起来像mock()使用DI。
我是对的,模拟()是DI还是我错过了这种模式和嘲讽?
mock
模块不使用依赖注入。
mock
用自定义的替换一些对象。
要使用依赖注入,必须有一些顶级进程,它将搜索要调用的函数,检测到的参数传递给它们,实例化它们并最终进行调用。
mock
只修改对象,并且按照惯例完成对这个对象的调用 - 直接调用该对象。
如果你想找到依赖注入的例子,请检查pytest
及其固定装置 - 它们使用它很多,使用它很有趣。
我想你主要关心的是用unittest.mock.patch
来嘲讽一个对象的属性。
patch
是一个函数,它只是返回类unittest.mock._patch
的一个实例。 _patch
是一个上下文管理器,它通过__enter__
monkeypatches属性,并在__exit__
上修改它。
谢谢!那么,看起来像模拟使用了一些“monkeypatching”方法? – Paul
@保罗是的,你是对的。 –