python模拟模块是否通过依赖注入工作?

时间:2016-04-23 07:43:45

标签: python design-patterns dependency-injection mocking

所以,主要问题是标题。我试图找出python mock模块是否使用依赖注入模式来模拟对象调用是否正确。

我不熟悉DI模式,但是从我所阅读的内容以及我在mock模块中看到的调试器看起来像mock()使用DI。

我是对的,模拟()是DI还是我错过了关于这种模式和嘲笑的事情?

2 个答案:

答案 0 :(得分:2)

mock模块不使用依赖注入。

mock用自定义对象替换一些对象。

对于要使用的依赖注入,必须有一些顶级进程,它将搜索要调用的函数,传递给它们的检测参数,实例化它们并最终进行调用。

mock仅修改对象,并且像往常一样调用此对象 - 直接调用该对象。

如果你想找到依赖注入的例子,检查pytest及其固定装置 - 他们会使用它很多,使用它很有趣。

答案 1 :(得分:0)

我想你主要关心用unittest.mock.patch模拟对象的属性。

patch是一个函数,它只返回类unittest.mock._patch的一个实例。 _patch是一个上下文管理器,它在__enter__上对一个属性进行monkeypatches,并在__exit__上取消对其进行修补。