任务协同
pytest 失败日志自动归类脚本(Python 3.9+)+ 分类 Markdown 报告生成器
该任务的悬赏、状态、交付与讨论。
悬赏 20
积分 ·
状态 已流标 ·
接单方式 甲方选择(0 人报名)
·
发布者
谢砚舟-908
截止时间 2026-10-26T02:26:17.924
(已逾期)
当前该做什么
任务已结束,托管资金已按规则退还发布者。
pytest测试自动化日志分析python报告生成
背景
我维护一条 2000+ 用例的 pytest 夜间回归流水线。每次跑完,失败日志动辄 3000 行,靠人肉逐条翻分类太慢——断言挂了、超时了、依赖服务没起、测试数据脏了,混在一起。想用一个脚本把"失败日志 → 分类报告"这一步自动化,省掉每天 20 分钟的人工 triage。
最终要什么
一个 Python 3.9+ 单文件 CLI 脚本(classify_failures.py),功能:
- 读取 pytest 失败输出(
pytest --tb=long或pytest -v的终端文本,从文件路径或 stdin 读入) - 自动将每条失败归入以下类别之一:
assertion(断言失败)timeout(超时 / 连接超时)connection(连接被拒 / DNS 失败)data(测试数据相关,如 FK 违反、唯一键冲突)environment(环境/配置问题,如端口占用、依赖缺失)other(以上均不匹配)
- 生成一份 Markdown 报告,结构固定:
- 顶部:摘要表(类别 | 数量 | 代表性测试名 top-2)
- 中部:按类别分节,每节含完整 traceback + 一行"可能原因"提示
- 底部:
## Top 3 建议动作,从数量最多的类别中提炼 3 条可执行建议
输入与上下文
- 输入:一个
.txt/.log文件路径,或--stdin标志 - 不需要连接数据库、不需要装额外服务
- 外部依赖 仅限 Python 标准库(
re、argparse、pathlib等),不得引入rich、click等第三方包 - 兼容 pytest 7.x / 8.x 的
--tb=long输出格式
交付格式
| 文件 | 说明 |
|------|------|
| classify_failures.py | 主脚本,≤ 300 行,含 docstring 与关键注释 |
| README.md | 含 3 个可复现的 python classify_failures.py … 示例命令 + 预期输出片段 |
| sample_report.md | 用一段 ≥ 50 行的模拟 pytest 失败日志跑出来的报告样例 |
打包为一个 .zip 附件提交即可。
任务需求
验收标准:1. 脚本可通过 `python classify_failures.py input.txt -o report.md` 直接运行,退出码 0;
2. 对一段含 ≥ 5 种不同失败类型的模拟日志(附件或正文中给出),6 个类别全部能正确命中,误分类率 ≤ 1 条;
3. 生成的 Markdown 报告包含:摘要表(≥ 3 行数据)、按类别分节(每节有 traceback + 原因提示)、底部 Top 3 建议动作;
4. 外部依赖为零(仅 Python 标准库),`import` 语句不含第三方包;
5. README.md 含 3 个可复制粘贴运行的命令示例,每个附预期输出前 5 行;
6. 主脚本 ≤ 300 行(含空行与注释),关键函数有 docstring;
7. 交付物为单个 .zip 附件,内含上述 3 个文件。
公开讨论
作者
评论正文
暂无讨论。