测试覆盖
质量是 CLI-Anything 项目的核心价值。我们通过全面的测试策略确保每个生成的 CLI 工具都能可靠地工作。
| 指标 | 数据 |
|---|---|
| 总测试用例 | 2,269+ |
| 通过率 | 100% |
| 测试框架 | pytest |
| 覆盖范围 | 单元测试 + 端到端测试 |
🧪 测试策略
Section titled “🧪 测试策略”双层测试体系
Section titled “双层测试体系”CLI-Anything 采用两层测试策略,确保从单个功能到完整工作流的质量:
1. 单元测试(Unit Tests)
Section titled “1. 单元测试(Unit Tests)”单元测试针对每个 CLI 工具的单个命令和功能进行验证:
- 命令解析:验证参数解析是否正确
- 参数验证:验证参数类型、范围、必填项检查
- 输出格式:验证 JSON 输出结构是否符合预期
- 错误处理:验证错误场景的退出码和错误消息
- 边界条件:验证极端输入和边界情况
# 单元测试示例def test_gimp_resize_with_valid_params(): """验证 GIMP resize 命令使用有效参数""" result = gimp_resize("input.jpg", "800x600", output="output.jpg") assert result.exit_code == 0 assert result.output["status"] == "success"
def test_gimp_resize_invalid_resolution(): """验证无效分辨率参数的错误处理""" result = gimp_resize("input.jpg", "abc", output="output.jpg") assert result.exit_code == 1 assert "invalid resolution" in result.output["error"].lower()2. 端到端测试(E2E Tests)
Section titled “2. 端到端测试(E2E Tests)”端到端测试验证完整的用户工作流:
- 安装测试:验证 CLI Hub 安装流程
- 完整工作流:从打开文件到导出结果的完整操作链
- 跨工具组合:多个 CLI 工具协作的复杂场景
- Agent 模拟:模拟 AI Agent 的典型使用模式
- 实际软件交互:与真实安装的软件进行交互测试
# E2E 测试示例def test_freecad_full_workflow(): """验证 FreeCAD 完整建模工作流""" # 创建草图 create_result = freecad_create_sketch(plane="XY") assert create_result.exit_code == 0
# 绘制矩形 draw_result = freecad_draw_rectangle(width=100, height=60) assert draw_result.exit_code == 0
# 拉伸 extrude_result = freecad_extrude(depth=20) assert extrude_result.exit_code == 0
# 导出 export_result = freecad_export(format="step", output="bracket.step") assert export_result.exit_code == 0 assert Path("bracket.step").exists()📊 覆盖范围
Section titled “📊 覆盖范围”| 维度 | 覆盖内容 |
|---|---|
| 功能覆盖 | 每个命令、每个参数、每个选项 |
| 错误覆盖 | 无效输入、缺失文件、权限错误、格式错误 |
| 输出覆盖 | JSON 格式验证、退出码验证、日志验证 |
| 兼容覆盖 | 不同 Python 版本、不同操作系统 |
| 工作流覆盖 | 单工具完整流程、多工具组合流程 |
每个生成的 CLI 工具都包含专属的测试套件,测试用例数量根据工具复杂度而定:
- 简单工具(如格式转换):20-50 个测试用例
- 中等工具(如 GIMP、Blender):50-150 个测试用例
- 复杂工具(如 FreeCAD、Blender 完整功能):100-200+ 个测试用例
▶️ 运行测试
Section titled “▶️ 运行测试”运行全部测试
Section titled “运行全部测试”pytest tests/运行特定工具的测试
Section titled “运行特定工具的测试”pytest tests/gimp/pytest tests/blender/pytest tests/freecad/运行单元测试
Section titled “运行单元测试”pytest tests/unit/运行 E2E 测试
Section titled “运行 E2E 测试”pytest tests/e2e/查看测试覆盖率
Section titled “查看测试覆盖率”pytest tests/ --cov=. --cov-report=html🔒 质量保障
Section titled “🔒 质量保障”CI/CD 集成
Section titled “CI/CD 集成”所有测试在每次代码提交时自动运行:
- 代码提交 → 触发 CI 流水线
- 单元测试 → 快速验证基本功能
- E2E 测试 → 验证完整工作流
- 覆盖率检查 → 确保覆盖率不低于阈值
- 结果报告 → 生成详细的测试报告
PR 合并要求
Section titled “PR 合并要求”- 所有测试必须 100% 通过
- 新代码必须有对应的测试覆盖
- E2E 测试必须通过
- 无新增 lint 警告
📈 测试增长
Section titled “📈 测试增长”随着新 CLI 工具的添加,测试用例数量持续增长:
| 里程碑 | 测试用例数 |
|---|---|
| 项目初期 | ~500 |
| 2026-03 | ~1,500 |
| 2026-04 | ~2,000 |
| 2026-05 | 2,269+ |
- 快速开始 — 安装并运行测试
- 参与贡献 — 帮助添加更多测试
- 查看支持的 CLI 列表 — 了解已测试覆盖的工具