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



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

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

我是对的,mock() 是 DI 还是我错过了关于这种模式和嘲笑的东西?

mock 模块不使用依赖注入。

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

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

mock 只修改对象,并且对此对象的调用照常完成 - 直接调用该对象。

如果你想找到依赖注入的例子,请检查pytest和它的夹具 - 他们经常使用它,使用它很有趣。

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

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

最新更新