Playwright + Allure 集成需装全三依赖:playwright(≥1.40)、allure-playwright、allure-commandline(pip安装);运行必须加--alluredir和--tracing=on,否则缺失trace导致报告无录制回放;自定义标签须用allure API枚举值,报告生成前需确认allure-results含.json与.trace.zip文件。

Playwright + Allure 的基础集成要装对这三样
不装全或版本错,allure serve 一跑就报 Failed to generate report: No results found。核心依赖只有三个,缺一不可:
-
playwright(必须 ≥1.40,旧版不支持原生 Allure 钩子) -
allure-playwright(不是allure-python!后者只适配 pytest + unittest) -
allure-commandline(命令行工具,用pip install allure-commandline装,别用系统包管理器)
验证是否装对:运行 playwright show-trace 能打开 UI,且 allure --version 输出 2.25+ 版本号。
pytest 运行时必须加 --alluredir 和 --tracing
Playwright 的 trace 文件是 Allure 报告里「录制回放」功能的唯一来源,没它,视频和操作快照全丢。光加 --alluredir 不够,必须同步开 tracing:
- 正确命令:
pytest --alluredir=./allure-results --tracing=on - 错误写法:
--tracing=off或漏掉--tracing参数 → 报告里「Attachments」只剩日志,没有 trace 文件 - 如果用
playwright codegen录制的脚本,记得手动在page实例上加page.pause()或page.screenshot(),否则 trace 可能截不到关键帧
自定义 Allure 标签得靠 pytest.mark 和 allure API 混用
单纯靠 @pytest.mark.parametrize 只能打标签名,想塞用例描述、优先级、负责人,得调 allure 模块:
librosa 是一个用于音频和音乐分析的 Python 库。它提供了特征提取、频谱分析、节拍跟踪、起始检测和音频可视化的工具,基于 NumPy 和 SciPy 构建,用于科学音频计算。
立即学习“Python免费学习笔记(深入)”;
import allure
@allure.title("登录失败:密码为空")
@allure.description("验证空密码提交后提示'请输入密码'")
@allure.tag("smoke", "login")
@allure.severity(allure.severity_level.CRITICAL)
def test_login_empty_password(page):
page.goto("https://example.com/login")
page.click("#submit-btn")
assert page.inner_text(".error") == "请输入密码"
注意:@allure.severity 的值必须是 allure.severity_level.XXX 枚举,写字符串如 "critical" 会静默失效;@allure.feature 和 @allure.story 用于分组,但只在报告首页「Packages」页生效,不在单个用例详情里显示。
生成报告前要检查 allure-results 里有没有 .json 和 .zip
Allure 报告本质是解析 .json 用例元数据 + .zip(trace 文件压缩包)。常见卡点:
- 目录下只有
test_*.json,没trace-*.zip→ 肯定是没开--tracing=on或 Playwright 启动时没传tracesDir - 有
.zip但双击打不开 → 用unzip -l trace-xxx.zip看内容,缺失trace.zip或resources/目录说明 trace 生成中途失败 -
allure serve ./allure-results启动后页面空白 → 先关杀毒软件,再确认端口没被占(默认 5050),换allure serve -p 5051 ./allure-results
真正麻烦的是 trace 文件体积:一个含 30 步操作的测试,trace 常超 20MB。CI 环境跑完直接 allure serve 会卡死,得先用 allure generate ./allure-results -o ./allure-report --clean 静态生成,再扔到 nginx 里看。

















