场景化接口自动化
使用本 skill 将接口资料和测试用例转换成场景化接口自动化。目标不是生成单接口冒烟用例,而是生成可执行的业务流程:包含请求顺序、变量提取、跨步骤数据依赖、业务断言和清晰的失败反馈。
工作流程
- 收集源材料:
- 接口资料:OpenAPI、Swagger、Postman 集合、Apipost 导出、Markdown 接口文档、后端路由文件。
- 可选上游测试用例,例如
test-case-xmind生成的cases.json。 - 环境信息:
base_url、测试账号、鉴权方式、必要测试数据、数据清理要求。
- 编写场景 DSL 前,阅读
references/scenario_schema.md。 - 导出测试代码前,阅读
references/pytest_export.md。 - 如果接口资料是 Markdown,可以先运行
scripts/extract_api_inventory.py提取接口清单。 - 生成
scenarios.yaml。除非用户明确要求其他格式,否则保持 JSON 兼容 YAML。 - 运行
scripts/validate_scenarios.py scenarios.yaml校验场景文件,并修复所有错误。 - 运行
scripts/export_pytest.py scenarios.yaml --output <项目目录>/api-automation导出接口自动化测试代码。 - 如果目标应用可以在本地运行,执行生成的测试套件;如果无法运行,交付生成文件并说明未执行的原因。
场景设计规则
- 优先生成 3-8 条有价值的业务场景,而不是大量浅层接口检查。
- 使用
extract和{{ variable }}模板串联步骤之间的数据。 - 同时断言传输结果和业务结果:
- HTTP 状态码。
- 响应字段。
- 创建后的资源能被查询。
- 数量、状态、归属关系或业务流转符合预期。
- 禁止访问路径返回正确失败结果。
- 在有价值的地方加入反向场景:缺少必填字段、非法 ID、错误鉴权、过期状态、重复提交、可注入的服务错误。
- 保持测试确定性。避免真实支付、真实邮件、真实 AI 调用或不可逆的生产操作。
- 如果没有清理接口,生成唯一测试数据,并避免依赖持久化全局状态。
输出结构
默认输出目录:
api-automation/
├── scenarios.yaml
├── tests/
│ └── test_api_scenarios.py
└── README.generated.md
scenarios.yaml 是接口自动化的源文件。生成的测试文件会内嵌场景定义,因此运行时不需要额外 YAML 解析依赖。导出的测试基于 unittest,也可以被 pytest 收集执行。
脚本
可在任意工作目录运行:
python3 <skill>/scripts/extract_api_inventory.py docs/接口文档.md --output api-inventory.json
python3 <skill>/scripts/validate_scenarios.py scenarios.yaml
python3 <skill>/scripts/export_pytest.py scenarios.yaml --output api-automation
脚本只使用 Python 标准库。生成的接口自动化测试也只使用 Python 标准库,可以通过 python3 -m unittest 运行;如果项目安装了 pytest,也可以被 pytest 收集执行。