# Test Run Report

> 启动被测应用并执行 pytest 生成 HTML/JUnit 报告与执行摘要。Use when the user asks to run tests, 执行测试, 跑测试, or generate test reports and execution summary.

- Skill: `naonaoxu/test-run-report` (Agent Skill)
- Install (CLI): `npx skillmds@latest add naonaoxu/test-run-report`
- Raw SKILL.md: https://api.skillmd.com/api/skills/naonaoxu/test-run-report/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: naonaoxu (https://skillmd.com/u/naonaoxu)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/naonaoxu/test-run-report

---


# 测试执行与报告生成（Test Run & Report）

## 目的

确保被测应用就绪，执行自动化测试，产出 pytest-html 报告、junit.xml 数据文件与执行摘要。

## 输入

- `tests/` 全套自动化代码（上游产物）
- 被测应用 `app/app.py`（若未启动则本技能负责启动）

## 执行步骤

1. **健康检查**：`curl -s http://127.0.0.1:5000/health`
   - 通（返回 `{"status":"ok"}`）→ 跳到第 3 步。
   - 不通 → 第 2 步。
2. **启动被测应用**：后台启动 `python app/app.py`（日志重定向到文件），然后**最多轮询 15 秒**（每秒 curl 一次 /health），仍不通则报告失败原因并给出排查建议。
3. **执行测试**：
   `python -m pytest -v --html=reports/report.html --self-contained-html --junitxml=reports/junit.xml`
   （pytest.ini 已配置，直接 `python -m pytest` 亦可）
4. **统计结果**：从 pytest 输出（或 junit.xml）统计通过/失败/错误数量，提取每个失败用例的名称与错误摘要。
5. **写执行摘要**：写入 `reports/执行摘要.md`（格式见下方模板）。
   - **预期失败说明**：本 DEMO 的被测应用含 3 个种子 BUG，预期恰好 3 条失败（登录-错误密码 / 创建用户-非法邮箱 / 删除用户-不存在 ID）。失败数量异常（0 或 >3）时必须在摘要中说明异常原因。

## 输出（固定路径）

- `reports/report.html`（pytest-html，自包含可离线打开）
- `reports/junit.xml`（机器可读结果，供 BUG 提交阶段解析）
- `reports/执行摘要.md`

## 执行摘要模板

```markdown
# 测试执行摘要

| 项目 | 内容 |
|---|---|
| 执行时间 | 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 编码 |

