Skip to content

测试覆盖

质量是 CLI-Anything 项目的核心价值。我们通过全面的测试策略确保每个生成的 CLI 工具都能可靠地工作。

指标数据
总测试用例2,269+
通过率100%
测试框架pytest
覆盖范围单元测试 + 端到端测试

CLI-Anything 采用两层测试策略,确保从单个功能到完整工作流的质量:

单元测试针对每个 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()

端到端测试验证完整的用户工作流

  • 安装测试:验证 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()

维度覆盖内容
功能覆盖每个命令、每个参数、每个选项
错误覆盖无效输入、缺失文件、权限错误、格式错误
输出覆盖JSON 格式验证、退出码验证、日志验证
兼容覆盖不同 Python 版本、不同操作系统
工作流覆盖单工具完整流程、多工具组合流程

每个生成的 CLI 工具都包含专属的测试套件,测试用例数量根据工具复杂度而定:

  • 简单工具(如格式转换):20-50 个测试用例
  • 中等工具(如 GIMP、Blender):50-150 个测试用例
  • 复杂工具(如 FreeCAD、Blender 完整功能):100-200+ 个测试用例

Terminal window
pytest tests/
Terminal window
pytest tests/gimp/
pytest tests/blender/
pytest tests/freecad/
Terminal window
pytest tests/unit/
Terminal window
pytest tests/e2e/
Terminal window
pytest tests/ --cov=. --cov-report=html

所有测试在每次代码提交时自动运行:

  1. 代码提交 → 触发 CI 流水线
  2. 单元测试 → 快速验证基本功能
  3. E2E 测试 → 验证完整工作流
  4. 覆盖率检查 → 确保覆盖率不低于阈值
  5. 结果报告 → 生成详细的测试报告
  • 所有测试必须 100% 通过
  • 新代码必须有对应的测试覆盖
  • E2E 测试必须通过
  • 无新增 lint 警告

随着新 CLI 工具的添加,测试用例数量持续增长:

里程碑测试用例数
项目初期~500
2026-03~1,500
2026-04~2,000
2026-052,269+