测试生成器Skill:一键生成带真实边界用例的单元测试
- 它是什么:一个能把源码文件直接转成测试文件的 AI 技能,既能输出“零令牌”快速骨架,也能在智能模式下分析函数签名和类型提示,自动补上空值、边界、注入等真实用例。
- 怎么用:核心是一条命令行——
gen_skeleton.py 源文件 > 测试文件;加上--style smart即进入智能模式,加上--from-index可对整个代码库批量覆盖。 - 比普通工具强在哪:不只是生成空存根,而是内置 8 个测试模式类别和 7 个边界情况类别,还带强制性 QA 检查清单,避免“测试写了但没测到点子上”。
- 支持范围:Python(pytest)、JavaScript/TypeScript(vitest/jest),覆盖后端服务与前端组件两类主流技术栈。
- 额外收益:
--coverage-report能直接告诉你哪些函数已有测试(✅)、哪些还是空白(❌)、整体覆盖率是多少(📈),适合做测试债盘点。
1. 该技能叫什么?如何下载安装 AI 技能提升开发效率?
这个技能的中文名是测试生成器Skill,英文名是 test-generator,技能 ID 为 12828。
它要解决的问题非常具体:写测试比写业务代码还累。多数团队并不缺“生成一个空测试文件”的工具,缺的是“这个函数该测什么”。测试生成器Skill 的思路是——先用脚本零成本产出骨架,再在智能模式下根据函数的类型提示和参数名称推断出值得测的边界情况(空值、极值、注入类输入、超大输入等),让测试文件生成出来就带有可执行的用例,而不是一堆 pass。
安装思路与步骤
- 确认宿主环境:该技能以目录形式挂载在 AI 编程环境/Agent 运行时的技能目录下,命令中出现的路径为
.agent/skills/test-generator/scripts/gen_skeleton.py,说明它遵循.agent/skills/<技能名>/的目录约定。请先确认你的运行环境支持 AI 技能(Skill)机制。 - 获取并安装技能:在技能市场或官方仓库中搜索技能名或技能 ID(12828)进行安装。具体的下载地址、安装命令与是否需要授权,技能详情中未提供,请以官方说明为准。
- 准备运行前提:本地需具备 Python 运行环境(脚本以
python调用);如果要用“从索引生成”的能力,还需要先安装并运行代码库导航器技能(codebase-navigator)。 - 验证是否生效:在项目根目录执行一次最小调用,看能否正常输出测试内容:
python .agent/skills/test-generator/scripts/gen_skeleton.py src/utils.py > tests/test_utils.py
如果 tests/test_utils.py 成功生成且包含针对 src/utils.py 中函数的测试结构,说明技能已正常工作。
2. 该技能的主要功能和特点
- 真实用例而非空存根:这是它最核心的定位。技能详情明确写着“生成包含真实测试用例的测试文件,不仅仅是空存根”。
- 智能边界情况分析:智能模式会分析函数签名和类型提示,自动推导出空值、边界值、注入类输入等边界情况测试,这正是人工写测试时最容易漏掉的部分。
- 零令牌骨架模式:默认的快速骨架由本地脚本直接产出,不依赖大模型反复推理,因此不会消耗大量令牌,适合批量、频繁调用。
- 四种工作模式自由切换:单文件骨架、单文件智能模式、全项目索引批量生成、覆盖率报告,覆盖从“补一个函数”到“盘一个仓库”的完整梯度。
- 内置 8 类测试模式库:
data/test_patterns.json收录了单元、安全、性能、E2E、数据库、错误处理等测试模式类别,让生成的测试结构更贴近工程实践。 - 7 类边界情况库 + 强制 QA 清单:
data/edge_cases.json提供边界情况类别,并附带强制性 QA 检查清单,相当于把“测试评审经验”固化进了生成流程。 - 覆盖率可视化:
--coverage-report用 ✅ / ❌ / 📈 三种符号直观区分“已测试函数 / 未测试函数 / 总覆盖率百分比”。 - 双语言栈支持:Python 走 pytest,JavaScript/TypeScript(含 .jsx/.tsx)走 vitest/jest,前端后端一套流程打通。
- 输出标准化,易于接入流水线:结果直接写入标准输出,用重定向落盘到测试目录,天然适配 CI 与代码评审流程。
和“普通工具”最本质的差别在于:普通脚手架解决的是文件是否存在,测试生成器Skill 解决的是用例是否有效。
3. 如何使用该技能?
以下步骤均对应技能详情中给出的真实命令,可直接参考。
第一步:单文件快速骨架(最轻量的起点)
python .agent/skills/test-generator/scripts/gen_skeleton.py src/utils.py > tests/test_utils.py
输入:一个源码文件路径(如 src/utils.py)。
输出:该文件中各函数对应的测试骨架,重定向写入 tests/test_utils.py。
适用:先让测试目录“有东西”,再逐步补断言。
第二步:开启智能模式,生成真实用例
python .agent/skills/test-generator/scripts/gen_skeleton.py src/auth.py --style smart > tests/test_auth.py
输入:带类型提示和明确参数名的源文件,例如认证模块中的校验函数。
处理逻辑:分析参数名称与类型提示 → 生成空值测试、边界值测试、XSS 注入类测试、大输入测试。
输出:tests/test_auth.py,其中包含针对上述边界情况的用例结构。
建议:参数名越语义化、类型提示越完整,智能模式推断出的用例越贴合业务。
第三步:从代码库索引做全项目覆盖
# 前提:先索引代码库
python .agent/skills/codebase-navigator/scripts/navigator.py --action index --path .
# 为所有索引函数生成测试
python .agent/skills/test-generator/scripts/gen_skeleton.py --from-index --style smart > tests/test_all.py
说明:第一步会生成/更新 codebase_index.json,第二步从该索引读取全部函数,为它们批量生成智能测试。适合项目初次补测试或大版本前的测试补齐。
第四步:查看覆盖率报告
python .agent/skills/test-generator/scripts/gen_skeleton.py --from-index --coverage-report
输出含义:
- ✅ 已有测试覆盖的函数
- ❌ 尚未被测试覆盖的函数
- 📈 当前的总覆盖率百分比
这一步通常放在迭代末期或质量周会上使用,用来快速锁定“最该补测试的模块”。
使用小贴士
- 所有命令都是“输出到 stdout + 重定向落盘”的形态,因此也可以先不重定向,直接在终端预览生成结果再做取舍。
- 建议把智能模式的产物视为高质量初稿:边界情况由工具找,业务断言由人确认。
4. 同类型竞品对比分析
| 方案名称 | 定位 | 核心功能 | 安装/使用门槛 | 适用场景 | 优势与不足 |
|---|---|---|---|---|---|
| 测试生成器Skill(test-generator) | 面向 AI 编程环境的测试生成技能 | 零令牌骨架、智能边界用例、代码库索引批量生成、覆盖率报告、8 类测试模式 + 7 类边界情况库 | 需支持 AI 技能机制的宿主环境 + 本地 Python;命令行为主,门槛较低 | 单函数补测、整仓补测、测试债盘点、安全边界用例补齐 | 优势:开箱即用、边界情况有内置知识库、支持 Python 与 JS/TS、可批量覆盖;不足:生成结果需人工复核断言,索引模式依赖代码库导航器 |
| 手写测试 + pytest-cov | 传统工程做法 | 人工编写用例,pytest-cov 统计覆盖率 | 无额外安装成本,但纯人力投入 | 逻辑复杂、断言要求严格的核心模块 | 优势:质量最高、最贴合业务;不足:耗时最长,边界情况依赖个人经验,容易漏测 |
| 通用 AI 编程助手对话式生成 | 通过自然语言让大模型写测试 | 对话描述需求后输出测试代码 | 门槛低,但每次生成消耗令牌,结果不稳定 | 零散函数、临时补充用例 | 优势:灵活、可解释;不足:批量场景令牌成本高、格式不统一、难以形成规范流程 |
| 属性测试框架(如属性/假设式测试思路) | 框架级测试增强 | 由框架自动生成随机输入寻找反例 | 需要学习框架写法与策略配置 | 数值计算、数据转换等纯函数 | 优势:能发现人工想不到的输入组合;不足:学习曲线陡,不适合接口层与前端组件,且不产出“可读的用例清单” |
从对比可以看出,测试生成器Skill 的差异点在于把“生成骨架”和“生成有效边界用例”合并在一个命令行流程里,并且在批量场景下不依赖逐次对话,令牌成本可控。
5. 该技能的典型应用场景与实际体验情况
场景一:后端迭代中“顺手补测试”
角色:Python 后端开发。
痛点:需求排期满,写完 src/auth.py 里的校验逻辑后没时间写测试,测试目录长期空白。
用法:直接跑智能模式一条命令,把 src/auth.py 转成 tests/test_auth.py,再人工核对断言。
实际体验:上手难度低,记住一条命令即可;智能模式生成的安全类与边界类用例往往比开发者自己第一版写的更全。注意:生成的是用例结构与场景,业务断言仍需人工确认,不能直接当“已验证”使用。
场景二:老项目“测试从零起步”
角色:接手遗留系统的开发者或技术负责人。
痛点:几十个模块、几百个函数,不知道从哪个开始补测试。
用法:先用 codebase-navigator 建索引,再用 --from-index --style smart 批量生成,最后用 --coverage-report 看 ✅/❌ 分布。
实际体验:覆盖率的百分比提供了明确的目标感,先补 ❌ 集中的模块收益最大。注意:全量生成的文件体量可能较大,建议按模块拆分落盘,而不是全部塞进一个 test_all.py。
场景三:安全敏感接口的边界覆盖
角色:负责登录、支付、输入校验等模块的开发者。
痛点:XSS、超长输入、空值等异常路径最容易漏测,上线后才发现。
用法:对校验类源文件使用 --style smart,借助内置的边界情况库与强制 QA 检查清单逐条对照。
实际体验:相当于把一份“边界测试清单”变成了代码,评审时可以直接对照用例逐项打勾。注意:涉及真实攻击载荷时,应在测试环境运行。
场景四:前端组件的测试补齐
角色:使用 TypeScript 的前端开发者。
痛点:React/Vue 项目的工具函数与组件逻辑缺乏测试。
用法:技能支持 .js/.ts/.jsx/.tsx,生成结果对接 vitest/jest。
实际体验:与后端共用同一套命令心智,切换成本低。注意:组件渲染类测试需要自行补充 mock 与测试环境配置。
6. 该技能能为用户带来的价值
- 把“写测试”从小时级压缩到分钟级:一条命令完成从源文件到测试文件的转换,批量模式下可一次性覆盖整个索引库。
- 显著降低测试门槛:不需要精通边界情况设计方法论,
data/edge_cases.json里的类别与强制 QA 清单已经把经验沉淀好了,新人也能产出结构完整的测试。 - 控制 AI 使用成本:默认骨架走“零令牌”路径,只有需要智能分析时才启用智能模式,避免了逐条对话生成测试带来的令牌开销。
- 让测试债变得可度量:覆盖率报告的 ✅ / ❌ / 📈 三个信号,把“感觉测试很少”变成“还有哪些函数没测、覆盖率多少”,便于排优先级和向上汇报。
- 长期价值在于规范沉淀:8 类测试模式与 7 类边界情况形成团队统一的测试骨架风格,代码评审时讨论成本更低,测试资产也更容易被后来者接手。
7. 常见问题 FAQ
Q1:这个技能到底怎么安装?装了怎么确认成功?
A:它属于 AI 技能(Skill)体系,需要在支持技能机制的编程环境或技能市场中安装,技能 ID 为 12828,可用于检索定位。具体下载入口与安装命令请以官方说明为准。验证方式很简单:执行一次 gen_skeleton.py src/utils.py > tests/test_utils.py,能正常生成测试文件即代表生效。
Q2:使用它需要付费吗?会不会大量消耗令牌? A:技能详情中未包含任何定价信息,是否收费请以官方说明为准。在令牌消耗方面,默认的快速骨架由本地脚本生成,走的是“零令牌骨架”路线;智能模式会做签名与类型分析,通常是单次批量处理,而不是逐条对话,整体开销可控。
Q3:它和直接让 AI 助手写测试有什么区别? A:对话式生成灵活但结果不稳定、格式不统一,且每次都要消耗令牌;测试生成器Skill 提供固定命令和固定输出结构,内置 8 类测试模式与 7 类边界情况库,还支持整仓批量和覆盖率报告,更适合纳入日常研发流程。
Q4:生成出来的测试可以直接提交吗? A:建议当作高质量初稿。边界场景由工具给出,业务断言和预期值需要开发者结合真实逻辑确认;涉及安全载荷的用例应在测试环境执行。把它理解成“帮你列全该测什么”,而不是“替你判断对错”。
Q5:我的项目是 TypeScript,能用吗?
A:可以。技能支持 Python(pytest)与 JavaScript/TypeScript(.js、.ts、.jsx、.tsx,对接 vitest/jest)。需要注意的是,“从代码库索引批量生成”与覆盖率报告依赖代码库导航器先完成索引,前端项目在首次使用前也要先跑一次索引流程。