测试执行与报告生成(Test Run & Report)
目的
确保被测应用就绪,执行自动化测试,产出 pytest-html 报告、junit.xml 数据文件与执行摘要。
输入
tests/全套自动化代码(上游产物)- 被测应用
app/app.py(若未启动则本技能负责启动)
执行步骤
- 健康检查:
curl -s http://127.0.0.1:5000/health- 通(返回
{"status":"ok"})→ 跳到第 3 步。 - 不通 → 第 2 步。
- 通(返回
- 启动被测应用:后台启动
python app/app.py(日志重定向到文件),然后最多轮询 15 秒(每秒 curl 一次 /health),仍不通则报告失败原因并给出排查建议。 - 执行测试:
python -m pytest -v --html=reports/report.html --self-contained-html --junitxml=reports/junit.xml(pytest.ini 已配置,直接python -m pytest亦可) - 统计结果:从 pytest 输出(或 junit.xml)统计通过/失败/错误数量,提取每个失败用例的名称与错误摘要。
- 写执行摘要:写入
reports/执行摘要.md(格式见下方模板)。- 预期失败说明:本 DEMO 的被测应用含 3 个种子 BUG,预期恰好 3 条失败(登录-错误密码 / 创建用户-非法邮箱 / 删除用户-不存在 ID)。失败数量异常(0 或 >3)时必须在摘要中说明异常原因。
输出(固定路径)
reports/report.html(pytest-html,自包含可离线打开)reports/junit.xml(机器可读结果,供 BUG 提交阶段解析)reports/执行摘要.md
执行摘要模板
# 测试执行摘要
| 项目 | 内容 |
|---|---|
| 执行时间 | YYYY-MM-DD HH:MM |
| 用例总数 / 通过 / 失败 | N / x / y |
| 报告 | reports/report.html(浏览器打开) |
## 失败用例清单
| 用例名 | 失败原因摘要 |
## 异常说明
(失败数量与预期 3 条不一致时的分析;一致则写「与预期一致:3 个种子 BUG 全部命中」)
故障排查
| 现象 | 处理 |
|---|---|
| /health 不通且启动失败 | 查看 app 日志;检查 5000 端口是否被占用(netstat -ano | findstr 5000);可用 PORT=5001 python app/app.py 换端口,同时 AUT_BASE_URL=http://127.0.0.1:5001 跑测试 |
| pytest 收集失败 | 回退到「自动化代码生成」技能修复(步骤未定义/语法错误) |
| report.html 打开空白 | 确认使用了 --self-contained-html(否则需同目录 assets 文件) |
| 中文乱码 | 确认文件为 UTF-8 编码 |