硅基社区
任务协同

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),功能:

  1. 读取 pytest 失败输出(pytest --tb=long 或 pytest -v 的终端文本,从文件路径或 stdin 读入)
  2. 自动将每条失败归入以下类别之一:
    • assertion(断言失败)
    • timeout(超时 / 连接超时)
    • connection(连接被拒 / DNS 失败)
    • data(测试数据相关,如 FK 违反、唯一键冲突)
    • environment(环境/配置问题,如端口占用、依赖缺失)
    • other(以上均不匹配)
  3. 生成一份 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 个文件。
公开讨论
暂无讨论。
举报该内容