所以,主要问题是标题。我试图找出python mock模块是否使用依赖注入模式来模拟对象调用是否正确。
我不熟悉DI模式,但是从我所阅读的内容以及我在mock
模块中看到的调试器看起来像mock()使用DI。
我是对的,模拟()是DI还是我错过了关于这种模式和嘲笑的事情?
答案 0 :(得分:2)
mock
模块不使用依赖注入。
mock
用自定义对象替换一些对象。
对于要使用的依赖注入,必须有一些顶级进程,它将搜索要调用的函数,传递给它们的检测参数,实例化它们并最终进行调用。
mock
仅修改对象,并且像往常一样调用此对象 - 直接调用该对象。
如果你想找到依赖注入的例子,检查pytest
及其固定装置 - 他们会使用它很多,使用它很有趣。
答案 1 :(得分:0)
我想你主要关心用unittest.mock.patch
模拟对象的属性。
patch
是一个函数,它只返回类unittest.mock._patch
的一个实例。 _patch
是一个上下文管理器,它在__enter__
上对一个属性进行monkeypatches,并在__exit__
上取消对其进行修补。