test-generator
自动化生成单元测试,支持多语言,覆盖率目标 ≥80%。
评分明细
适用场景
test-generator 快速入门
让 AI 帮你写完”主逻辑”后,顺手把测试用例也补齐,告别覆盖率焦虑。
这是什么?解决什么问题?
写完业务代码后,最容易被推迟的就是单元测试。常见借口包括:“时间紧”、“这个函数太简单不用测”、“等我写完别的再说”……结果就是项目里的测试覆盖率长期在 20% 上下,改一行代码就提心吊胆。
test-generator 是 Anthropic 官方 skills 仓库里的测试生成 Skill,核心能力是:给定一段源码文件,自动分析其中的函数/类/分支,生成对应的单元测试用例。Skill 内部封装了对覆盖率工具(如 coverage.py、jest --coverage、go test -cover)的解析,能够主动识别”未覆盖的分支”并补全对应测试。
支持的场景包括:Python + pytest、JavaScript/TypeScript + Jest/Vitest、Go + testing、Java + JUnit 等主流栈。Skill 内置了”圈复杂度阈值”,对过于复杂的函数会主动建议先重构再写测试,这是它比普通代码生成工具更专业的地方。
它适合:代码评审前需要补测试的紧急需求、老项目改造需要建立测试基线、新人入职需要快速理解函数行为并验证假设。
准备工作
- 已安装 Claude Code 或 Cursor:本 Skill 通过 Anthropic 官方
npx skills命令加载 - 项目已有测试框架:pytest、jest、vitest、go test、junit5 均可
- 覆盖率工具可用:
coverage.py/nyc/go test -cover至少配好一种 - 可选:Git,让 Skill 在生成测试时感知 diff
3 步快速上手
第 1 步:安装 Skill
npx skills add anthropics/skills --skill test-generator
仓库:https://github.com/anthropics/skills
第 2 步:验证 Skill 是否生效
新建一个 verify.md 文件,粘贴任意一段 Python 函数,询问:
用 test-generator Skill,告诉我这个函数的圈复杂度,并列出需要测试的分支
如果 AI 在回答中提到了”圈复杂度 N”、“分支覆盖率”、“边界条件”等关键词,说明 Skill 加载成功。
第 3 步:为真实文件生成测试
请用 test-generator Skill 为 src/utils/parser.py 里所有 public 函数生成 pytest 测试,
要求覆盖率 ≥80%,输出到 tests/test_parser.py
AI 会读取源码,分析每个函数,生成包含正常路径、异常路径、边界条件(空值/极大值/类型错误)的测试,并最终帮你运行 pytest --cov=src/utils 验证覆盖率。
常见踩坑
- 生成的测试全是
assert x == x:Skill 加载失败或项目没有测试框架。务必先确认pytest/jest命令可以直接运行,再让 AI 生成测试。 - 覆盖率统计不到生成的测试:有些项目用
if __name__ == '__main__'写示例代码,这些行不会在 import 时执行,需要在conftest.py或package.json配collect路径。 - 依赖外部资源的函数:数据库查询、HTTP 请求、随机数等,Skill 第一次生成可能没 mock,需要补充”使用 pytest-mock 或 unittest.mock”指令。
- 测试互相污染:AI 生成的测试有时会共享一个全局变量,导致顺序执行时一个 case 污染另一个。建议追加”每个测试必须独立,使用 fixture 而非全局变量”。
- 循环/异步代码覆盖不全:async 函数、生成器、回调函数在覆盖率工具里有时被算作”部分覆盖”,需要在
pytest-asyncio配置里加--cov-branch开启分支覆盖。 - 过度生成测试:对私有函数或实现细节的测试会拖慢 CI,Skill 默认会写 public API,但可以加约束”只测 export 的函数”。
初级用法
- 单文件批量测试:对 AI 说”为 src/api/orders.py 生成测试”,它会一次性把整个文件的测试都铺好,适合补覆盖率。
- 增量补测:对 Git diff 里的变更说”只针对这次修改的函数生成测试,不要改其他文件”,适合 PR 流程。
- 解释老代码的测试意图:对着一段没注释的代码说”给这段代码生成测试,并在每个 test 函数上方写一句中文说明它在测什么”,适合新人理解项目。
高级玩法
- 基于属性的测试(property-based testing):让 Skill 引入
hypothesis或fast-check,自动生成大量随机输入,找出”边界 bug”。 - 变异测试(mutation testing):用
mutmut/Stryker检测测试强度,Skill 可以指导你跑变异测试,找出”虽然通过但其实没断言”的僵尸测试。 - CI 集成:在 GitHub Actions 里加一步”如果覆盖率下降超过 5%,Job 失败”,Skill 提供完整的 workflow 模板。
小技巧
- 给 Skill 喂代码前,先在文件头加一句
# 主要逻辑:解析用户上传的 CSV,返回字典列表这种注释,生成的测试会更聚焦。 - 函数如果圈复杂度 > 10,Skill 会主动拒绝生成测试,提示先重构——这其实是好信号,说明它在保护你不写出”测了也白测”的代码。
- 用
--cov-branch比--cov严格很多,前者会算 if/else 两个分支,后者只算行覆盖,推荐前者。 - 生成测试后,跑一次
pytest -x让第一个失败立即停下,避免被一长串报错淹没。 - 在
tests/目录加一个conftest.py写好 fixture 复用,能显著降低 AI 重复生成 setup 代码的体积。
常见问题 FAQ
Q1: 这个 Skill 跟 test-generator 有什么关系?必须装吗?
A: Skill 是给 AI Agent 用的”技能包”,能告诉 Agent 怎么按特定规范工作。不是必须装——如果你的项目规模小、要求不高,不装也能用。但装上能让 Agent 输出的质量更高、更符合最佳实践,推荐装。
Q2: 这个 Skill 适合哪些 AI Agent?Cursor?Claude Code?其他?
A: test-generator 来自 Anthropic,主要面向支持 Skill 机制的 Agent。常见兼容 Agent 包括 Claude Code、Cursor、OpenCode、Windsurf 等。具体兼容性请查 Skill 官方文档。
Q3: 装了这个 Skill 后,会拖慢 Agent 响应吗?
A: 会的——Skill 通常会增加 prompt 长度,导致响应变慢、token 消耗增加。但质量提升明显。建议:1) 只装项目必需的 Skill;2) 用 Skill 启动/加载/卸载机制按需加载;3) 定期清理不用的 Skill。
Q4: 怎么验证 Skill 装对了?
A: 在 Agent 中输入”列出已加载的 Skill”或类似命令。如果 Skill 出现在列表里,说明装对了。然后用 Skill 跑一个相关任务,看输出是否符合 Skill 规范。
Q5: 这个 Skill 有许可证吗?能商用吗?
A: 取决于 test-generator 的许可证。常见许可证包括 MIT(完全自由)、Apache-2.0(自由但有专利条款)、源可用(可看不能用)、GPL(强开源)。商用前请查仓库 LICENSE 文件。
参考链接
- Skill 仓库:https://github.com/anthropics/skills
- 原始作者仓库:https://github.com/Jeffallan/Claude-Skills
- pytest 覆盖率文档:https://pytest-cov.readthedocs.io/
- Jest 覆盖率:https://jestjs.io/docs/cli#—coverage
- Go 测试覆盖:https://go.dev/blog/cover
本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。如有错误或过时信息,请通过 contact@magicnetworld.com 反馈。
test-generator Skill 多维度简评
类别:测试工具 来源:anthropics/skills 定位:AI 自动生成测试——单元测试、集成测试、E2E 测试,覆盖常见边界情况。
注意:本文基于官方文档和公开资料整理,未经过 MagicNetWorld 实测。
一、核心定位与价值
test-generator 是 Anthropic 官方 Skills 仓库中的测试生成工具。它的目标不是替代测试工程师,而是利用 AI 的代码理解能力快速生成测试用例框架,覆盖开发者容易遗漏的边界情况,加速测试编写过程。
核心价值:基于代码分析自动生成测试骨架,覆盖正常路径、边界值、异常输入,并支持 property-based testing 和 fuzzing 策略。
二、核心能力清单
| 能力 | 说明 |
|---|---|
| AI 测试补全 | 分析代码逻辑,自动生成缺失的测试用例 |
| Property-based Testing | 基于属性/不变量的测试,自动生成随机输入验证代码行为 |
| Fuzzing 策略 | 生成大量随机/异常输入,检测程序崩溃和未处理异常 |
| Mutation Testing | 通过修改代码(mutation)验证测试套件是否能检测到变更 |
| 覆盖率分析 | 分析现有测试的代码覆盖率,识别未测试的路径 |
| Edge Case 生成 | 自动识别并覆盖空值、零值、极大/极小值、并发等边界情况 |
三、测试分类
| 层级 | 说明 | 示例 |
|---|---|---|
| 单元测试 | 测试单个函数/方法的逻辑 | Jest、pytest、Go testing |
| 集成测试 | 测试多个模块的交互 | API 端点测试、数据库交互测试 |
| E2E 测试 | 模拟用户操作,测试完整流程 | Playwright、Cypress |
test-generator 默认遵循测试金字塔原则:大量单元测试 + 适量集成测试 + 少量 E2E 测试。
四、工作流
- 代码分析:读取目标源文件,理解函数签名、分支逻辑和依赖关系
- 测试生成:为每个函数/方法生成测试骨架,包含 Arrange-Act-Assert 结构
- 边界覆盖:自动补充空值、极端值、异常路径的测试用例
- 验证:运行生成的测试,确认编译通过且逻辑正确
- 报告:输出覆盖率提升建议和未覆盖路径清单
五、与 TDD 的关系
test-generator 可以与 tdd-workflow Skill 配合使用:
- tdd-workflow 确保开发流程遵循”测试先行”
- test-generator 加速测试编写本身,生成初始测试骨架
两者组合可以实现:先由 test-generator 生成测试框架 → tdd-workflow 确保按 Red-Green-Refactor 完成实现。
六、安装与配置
# npx 安装
npx skills add anthropics/skills --skill test-generator
七、总结
test-generator 解决的是”测试编写耗时”这一普遍痛点。它不替代测试工程师的判断,而是将重复的、机械的测试生成工作自动化,让开发者专注于有价值的测试场景设计。
适用人群:QA 工程师、SDET(测试开发工程师)、所有需要提升代码测试覆盖率的开发者。
参考资料
- GitHub: anthropics/skills - test-generator — GitHub 仓库
- Anthropic Claude Code Skills 文档 — 官方文档
- Claude World - TDD Workflow Guide — TDD 实践
- Martin Fowler - TestPyramid — 测试金字塔概念
- Agent Skills 开放规范 — 标准规范
快速安装
npx skills add anthropics/skills --skill test-generator