# Auto Test

> Generates unit tests for multiple languages and frameworks, including coverage reports and boundary/exception cases.

- Skill: `luokai0/auto-test` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add luokai0/auto-test`
- Raw SKILL.md: https://api.skillmd.com/api/skills/luokai0/auto-test/raw
- Safety review: PASS (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools, AI & ML, Testing & QA
- Tags: Coverage, Jest, Junit, Pytest, Unit Testing
- Author: luokai0 (https://skillmd.com/u/luokai0)
- Updated: 2026-08-22
- Page: https://skillmd.com/skills/luokai0/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_process_order_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 test_process_order_invalid_total():
    """测试无效订单总金额"""
    order = Order(id=2, items=[...], total=-10.0)
    with pytest.raises(InvalidOrderError):
        process_order(order)

def test_process_order_empty_items():
    """测试空购物车"""
    order = Order(id=3, items=[], total=0.0)
    with pytest.raises(EmptyCartError):
        process_order(order)
```

## 工作流程

1. **代码分析** - 解析 AST，识别函数、类、方法
2. **逻辑提取** - 理解输入、输出、副作用、异常
3. **测试生成** - 生成对应测试框架的测试代码
4. **覆盖率计算** - 运行测试，生成覆盖率报告
5. **结果输出** - 保存测试文件，提供总结

## 集成建议

- 结合 `pre-commit` hook，提交前自动生成测试
- 与 CI/CD 集成，确保新代码有测试覆盖
- 使用 `--dry-run` 预览，避免覆盖现有测试

