Auto-Test - 自动单元测试生成
智能自动生成单元测试,提升代码覆盖率,减少手动测试工作量。
核心功能
- - 🧪 自动测试生成 - 分析函数/方法,生成对应测试用例
- 📊 覆盖率报告 - 集成 pytest-cov, Jacoco, Istanbul 等
- 🔄 多框架支持 - pytest, unittest, JUnit, Jest, Vitest
- 🎯 边界测试 - 自动生成边界条件、异常测试
- 📝 测试文档 - 生成测试说明和断言解释
使用场景
- - 新功能开发后快速生成测试
- 遗留代码补充测试覆盖
- 重构前确保行为不变
- 代码审查时提供测试证据
快速开始
CODEBLOCK0
配置选项
| 参数 | 说明 | 默认 |
|---|
| INLINECODE0 | 项目路径 | INLINECODE1 |
| INLINECODE2 |
测试框架 |
pytest |
|
--coverage | 生成覆盖率 |
false |
|
--output | 输出文件/目录 |
./tests/ |
|
--dry-run | 仅预览 |
false |
|
--exclude | 排除目录 |
node_modules,vendor,target |
支持的语言与框架
| 语言 | 框架 | 状态 |
|---|
| Python | pytest, unittest | ✅ 完整 |
| Java |
JUnit 4/5, TestNG | ✅ 完整 |
| JavaScript/TypeScript | Jest, Vitest, Mocha | ✅ 完整 |
| Go | testing | ✅ 完整 |
| Rust | cargo test | ✅ 完整 |
| C# | NUnit, xUnit | 🚧 开发中 |
输出示例
CODEBLOCK1
工作流程
- 1. 代码分析 - 解析 AST,识别函数、类、方法
- 逻辑提取 - 理解输入、输出、副作用、异常
- 测试生成 - 生成对应测试框架的测试代码
- 覆盖率计算 - 运行测试,生成覆盖率报告
- 结果输出 - 保存测试文件,提供总结
集成建议
- - 结合
pre-commit hook,提交前自动生成测试 - 与 CI/CD 集成,确保新代码有测试覆盖
- 使用
--dry-run 预览,避免覆盖现有测试
技能名称: auto-test
详细描述:
Auto-Test - 自动单元测试生成
智能自动生成单元测试,提升代码覆盖率,减少手动测试工作量。
核心功能
- - 🧪 自动测试生成 - 分析函数/方法,生成对应测试用例
- 📊 覆盖率报告 - 集成 pytest-cov, Jacoco, Istanbul 等
- 🔄 多框架支持 - pytest, unittest, JUnit, Jest, Vitest
- 🎯 边界测试 - 自动生成边界条件、异常测试
- 📝 测试文档 - 生成测试说明和断言解释
使用场景
- - 新功能开发后快速生成测试
- 遗留代码补充测试覆盖
- 重构前确保行为不变
- 代码审查时提供测试证据
快速开始
bash
分析项目并生成测试
python3 scripts/generate-tests.py --path /path/to/project --framework pytest
生成覆盖率报告
python3 scripts/generate-tests.py --path . --coverage --output coverage.html
仅分析不生成(预览)
python3 scripts/generate-tests.py --path . --dry-run
配置选项
| 参数 | 说明 | 默认 |
|---|
| --path | 项目路径 | . |
| --framework |
测试框架 | pytest |
| --coverage | 生成覆盖率 | false |
| --output | 输出文件/目录 | ./tests/ |
| --dry-run | 仅预览 | false |
| --exclude | 排除目录 | node_modules,vendor,target |
支持的语言与框架
| 语言 | 框架 | 状态 |
|---|
| Python | pytest, unittest | ✅ 完整 |
| Java |
JUnit 4/5, TestNG | ✅ 完整 |
| JavaScript/TypeScript | Jest, Vitest, Mocha | ✅ 完整 |
| Go | testing | ✅ 完整 |
| Rust | cargo test | ✅ 完整 |
| C# | NUnit, xUnit | 🚧 开发中 |
输出示例
python
生成的测试 (pytest)
def test
processorder_valid():
测试有效订单处理
order = Order(id=1, items=[...], total=100.0)
result = process_order(order)
assert result.status == completed
assert result.processed_at is not None
def testprocessorderinvalidtotal():
测试无效订单总金额
order = Order(id=2, items=[...], total=-10.0)
with pytest.raises(InvalidOrderError):
process_order(order)
def testprocessorderemptyitems():
测试空购物车
order = Order(id=3, items=[], total=0.0)
with pytest.raises(EmptyCartError):
process_order(order)
工作流程
- 1. 代码分析 - 解析 AST,识别函数、类、方法
- 逻辑提取 - 理解输入、输出、副作用、异常
- 测试生成 - 生成对应测试框架的测试代码
- 覆盖率计算 - 运行测试,生成覆盖率报告
- 结果输出 - 保存测试文件,提供总结
集成建议
- - 结合 pre-commit hook,提交前自动生成测试
- 与 CI/CD 集成,确保新代码有测试覆盖
- 使用 --dry-run 预览,避免覆盖现有测试