Mock 生成:隔离测试
Mock 是用可控的假对象替换真实依赖(数据库、网络、第三方服务),让单元测试只测目标逻辑、稳定且快速。AI 可批量生成 Mock 与桩代码。
是什么
Mock 模拟协作对象的行为:预设返回值、记录调用次数、断言是否被按预期调用。桩(stub)只提供固定响应,Mock 更强调交互验证。
为什么有用
真实依赖慢、不稳定或有副作用,直接调用会让测试脆弱。隔离后测试可重复、秒级运行,并能在依赖尚未实现时先行开发。
怎么用
Python 用 unittest.mock 替换外部调用:
from unittest.mock import MagicMock
db = MagicMock()
db.fetch_user.return_value = {"id": 1, "name": "阿强"}
assert get_user_name(db, 1) == "阿强"
db.fetch_user.assert_called_once_with(1)
AI 编码助手可依据接口签名自动生成此类 Mock。
注意点
Mock 太多会测成「实现细节」,重构即红。只 Mock 真正的边界(IO、时间、随机)。保持与真实依赖的契约一致,避免 Mock 与实作脱节。
小结
Mock 用假对象隔离外部依赖,使单元测试快速稳定,unittest.mock 即可实现;AI 辅助生成,但要只 Mock 边界、避免与实作脱节。
参考与延伸阅读
- Python unittest.mock 标准库文档。已核验。https://docs.python.org/3/library/unittest.mock.html
- pytest 官方文档。已核验。https://docs.pytest.org/
本文累计阅读 — 次