You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python不推荐使用依赖注入(DI)时,测试场景下如何进行mock操作?

虽然多数Python社区开发者认为鸭子类型(duck typing)和猴子补丁(monkey patching)的存在让依赖注入(DI)在Python中失去了意义,但我却频繁遇到《Cosmic Python》中描述的问题:

标准做法是仅通过导入隐式声明依赖,之后如果测试中需要修改依赖,使用猴子补丁即可,这在动态语言中被奉为圭臬……但实际开发中,每个可能触发缺货通知的测试用例,你都得调用mock.patch。如果你接触过大量使用mock来规避非预期副作用的代码库,就会清楚这类mock样板代码有多恼人。

书中还提到:

而且你会发现mock会让代码与实现强耦合。如果选择猴子补丁修改email.send_mail,我们就被绑定到import email的写法上,哪怕只是做from email import send_mail这种微不足道的重构,所有的mock代码都得跟着修改。

让我困扰的是,Stackoverflow热门问题*Why is IoC / DI not common in Python?*下的很多回答,要么对DI本身理解不足,要么没有意识到它的实用性。

Raymond Hettinger提出了一种颇具吸引力的DI替代方案,但我不清楚它在测试场景下该如何使用……我到底哪里理解有偏差?


内容的提问来源于stack exchange,提问作者Rowan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:45:08