04 · 测试、调试与重构
03-添加功能 | 下一篇 → 05-并行多功能开发
三件智能体最擅长的事
测试、调试、重构都是「目标明确、可自动验证」的活,特别适合交给智能体——因为它能自己跑、自己看结果、自己改。
自动写测试
给 @app/api/chat.py 的 /sessions 接口写 pytest 测试:
- 覆盖正常返回、空列表、未登录三种情况
- 放到 tests/test_sessions.py
- 写完跑一遍确认通过
要点:
- 让它写完就跑(pytest -q),形成「写测试→跑→修」的闭环。
- 测试是智能体的护栏:有测试,它后续重构才敢放手改。
调试:把报错喂回去,让它自我纠错
智能体调试的本质是一个循环:
复现 → 看报错 → 提假设 → 加日志/改 → 再跑 → 收敛
实操:
跑 pytest 时报这个错(贴完整 traceback),
先别改代码,告诉我你怀疑哪几个原因、怎么验证。
- 先让它定位(假设 + 验证)再改,避免乱试。
- 复杂 bug 让它加日志/打印再跑,用数据说话。
- 修完重跑测试确认真修好了,而不是「看起来对」。
重构
重构 @app/services/retriever.py:
- 把 200 行的 search() 拆成职责单一的小函数
- 不改变对外行为,现有测试必须全过
- 改完跑 pytest 给我看结果
要点: - 重构的安全网是测试——先确保有测试,再让它改。 - 强调「对外行为不变」,让它围着测试转。 - 大重构先 Plan,列出拆分方案再动手。
让验证自动化的心法
智能体编程能放手的前提是:它能自己判断对不对。 所以尽量给它可执行的验收标准:测试命令、构建命令、lint 命令。
本节实操
- 给上一节加的功能补一组测试,让 Claude 写完即跑
- 故意制造一个 bug,把报错贴回去看它怎么定位
- 让它重构一段长函数,约束「测试必须全过」
下一篇 → 05-并行多功能开发