SuperAPI AI 工具集

django-targeted-mocking

测试与质量

查看项目

更新于 10-16 06:24

技能介绍

用途:为 Django 测试提供“精准打桩”的边界工作流,避免大范围 mock 让测试变快却证明力下降。

主要能力与用法:先判断是否真的需要 mock,本地领域逻辑尽量用真实代码;只对外部 HTTP、时间、设置、输入输出和昂贵服务边界打桩。打桩位置应选被测代码查找依赖的地方,即被测模块导入的符号,而非原始库路径。

推荐工具:设置用 override_settings、modify_settings 或 pytest-django 的 settings fixture;输出用 io.StringIO、pytest capsys 或命令测试辅助;HTTP 用 requests-mock 手写响应,或用 VCR.py 录制响应;时间尽量作为参数传入,否则用 time-machine 等专用工具。

接口感知:使用 autospec=True、spec、spec_set、create_autospec 或小型 fake 对象,避免裸 Mock/MagicMock。应阻止意外外发 HTTP,正常测试套件若触网应失败。

决策规则:不要直接赋值 django.conf.settings;只需少量属性时用手工 fake 或 types.SimpleNamespace;可控的确定性 API 响应用 requests-mock;真实录制响应有价值且可安全存储时用 VCR.py;CI 上配置 VCR 录制模式,使缺失 cassette 直接失败而非录制;时间 mock 要全局一致,不要手工 patch 多个 datetime 函数;不要 mock 测试本身要证明其行为的组件。

常见错误:直接 patch 设置导致状态泄漏;使用万能 MagicMock 接受拼错属性与错误调用签名;允许测试访问真实外部服务;在 CI 录制 VCR cassette;过度 mock 视图内部辅助函数导致不再覆盖请求行为;patch 错导入路径却以为 mock 生效。

验证:每个 mock 都有明确边界理由;接口敏感 mock 使用 spec 或 fake;正常套件阻止意外外发 HTTP;设置由 Django 或 pytest 辅助自动恢复;测试仍覆盖行为而非仅验证 mock 调用。

限制:资料未提供具体安装命令、版本要求、平台支持或收费信息。