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 边界、避免与实作脱节。

参考与延伸阅读

本文累计阅读