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

Does python mock module work by dependency injection?

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

我不熟悉 DI 模式,但从我读过的内容和我在 mock 模块底层看到的调试器看起来像 mock() 使用 DI。

我说得对吗,mock() 是 DI,还是我遗漏了有关此模式和模拟的某些信息?

mock模块没有使用依赖注入。

mock 将一些对象替换为自定义对象。

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

mock 仅修改对象并且对该对象的调用照常进行 - 直接调用该对象。

如果您想查找依赖项注入的示例,请查看 pytest 及其固定装置 - 他们经常使用它并且使用它很有趣。

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

patch 是一个函数,它所做的只是 return class unittest.mock._patch 的一个实例。 _patch 是一个上下文管理器,它在 __enter__ 上猴子修补一个属性并在 __exit__ 上取消修补它。