说明:本文是整理,不是新实测。内容来自完整版 commands/test.md 原文与 2026-10-01 的实测记录。/test 是 Lite 版 3 条命令之一(Lite 版免费就有 /test、/review、/commit),完整版同款命令,另含其余 7 条命令与三套模板、速查表。本文只讲 /test 这一条,不编造新实测。

1. 先列用例清单再写代码,清单先给人过一眼

/test 的第一步不是写测试代码,是先列用例清单,分三类:正常路径、边界条件(空输入、0、最大值、None)、异常路径(抛错、非法输入)。清单给用户过一眼再动手。

示例来自命令原文:输入 /test calc_discount,用例是 gold 8 折、silver 9 折、normal 原价、未知 level 走默认、total 为 0、负数 total——6 个用例先列出来,再生成 test_orders.py,真实跑 pytest,报告 6 passed。

非交互环境(无人值守执行、无法等用户过目)时不等确认,默认按清单继续,并在输出开头标注 [清单未确认-已继续]。这条规则是 2026-10-01 双兼容实测里 /test 改过的 1 处:非交互 fallback 不等人,改标注不改流程。

2. 每个用例一个函数,命名说清楚测什么

按清单写测试,用项目已有测试框架,没有框架默认 pytest。每个用例一个函数,命名说清楚测什么,例如 test_batch_settle_缺失level时给默认值。

测试文件放哪也有规矩:有 tests/ 目录就放里面,没有就跟被测文件同目录,命名 test_xxx.py。命名和位置先定好,review 时才找得到。

3. 写完必须真实执行,失败先分清是谁的错

写完测试必须真实跑一遍。失败的用例先判断是测试写错还是代码有 bug——是 bug 就报出来,不要为了绿而改测试迁就 bug。

这条是 /test 与“刷覆盖率”最根本的区别:测试是用来发现 bug 的,不是用来给代码贴合格证的。改测试迁就 bug,当下绿了,bug 还在。

4. 最后说清楚哪些分支没覆盖,不撒谎说全覆盖

收尾要说明哪些分支还没覆盖、为什么,例如“网络超时分支需 mock,已略过”,不撒谎说“全覆盖”。

命令原文的输出格式就是四段:用例清单、测试代码(文件路径+完整代码)、执行结果(粘贴真实运行输出:x passed, y failed)、未覆盖说明。缺了最后一段,这份测试报告就不完整。

5. 四种情况不要用 /test,先解决前置问题

  • 代码本身还没跑通过——先让代码 work,再补测试。
  • 只想要覆盖率数字好看——这个命令按三类用例写,不刷数字。
  • 测试依赖外部服务(数据库、网络)且没法 mock——先解决可测试性,硬写出来的测试是 flaky 的源头。
  • 要求“一次写 50 个用例”——分批写,先核心路径。

不用 /test 的场景

  • 还没写完函数、代码还没跑通过:先写代码,再补测试。
  • 只是想看一条命令长什么样:Lite 版免费就有 /test,直接装 Lite 版试。

价格与链接

完整版中文 AI 编程 CLI 工作流包:早鸟 ¥9.90(限前 100 份),正式 ¥19.90。/test 本身在 Lite 版免费版中已有,完整版是 10 条命令全量。