必须同时安装allure-pytest插件和Allure CLI(≥2.13.0),缺一则无法生成Allure可识别的JSON报告;运行pytest需加--alluredir参数输出原始数据,再用allure serve或allure generate生成HTML报告。

安装allure-pytest插件和Allure命令行工具
不装这两个东西,pytest根本没法输出Allure能识别的JSON结果。缺一不可。
先装Python端插件:
pip install allure-pytest
再装Allure CLI(关键:必须是2.13.0以上版本,旧版不支持pytest 7+的hook):
- macOS用
brew install allure(确保brew update过) - Windows推荐用
scoop install allure,或手动下载最新allure-2.x.x.zip解压后把bin目录加进PATH - 验证是否生效:
allure --version输出应 ≥ 2.13.0
运行pytest时启用allure输出
核心就一条命令:加 --alluredir 参数指定JSON结果目录,否则pytest不会生成Allure需要的原始数据。
示例:
pytest tests/ --alluredir=./allure-results
注意点:
-
./allure-results目录会被清空重建,别往里面手写文件 - 如果想保留历史报告,得自己用时间戳重命名目录,比如
--alluredir=./allure-results-$(date +%s)(Linux/macOS) - 不加
--alluredir就算装了插件,也只跑测试,不存任何Allure数据
生成可浏览的HTML报告
Allure报告不是自动生成HTML的,它分两步:先产出JSON,再用CLI把JSON转成静态HTML。
执行:
allure serve ./allure-results
这会启动本地服务(默认 http://localhost:5080),自动打开浏览器。但注意:
-
allure serve是开发调试用的,生成的HTML带实时刷新和临时服务,**不能直接拷给别人看** - 如需离线分享,改用:
allure generate ./allure-results -o ./report --clean,生成纯HTML到./report目录 -
--clean很重要,否则重复生成会把旧资源混进去,导致JS报错或图表不显示
常见失败原因和绕过方法
跑完 allure serve 打不开页面?大概率是JSON没生成,而不是Allure本身坏了。
排查顺序:
- 检查
./allure-results目录下有没有*.json文件 —— 没有说明 pytest 根本没调用 allure 插件(确认是否漏了--alluredir) - 检查 pytest 是否报了
allure相关 import 错误 —— 多半是插件版本不匹配(比如用 pytest 8 装了太老的allure-pytest) - 浏览器打不开
localhost:5080?试试curl http://localhost:5080看返回,排除防火墙或端口占用(lsof -i :5080或netstat -ano | findstr :5080) - 图表空白、用例状态全灰?通常是 JSON 文件里缺失
status字段 —— 检查是否用了@allure.step但没正确装饰函数,或自定义 hook 写错了
最常被忽略的是:Allure不处理测试代码里的异常捕获逻辑。如果你在测试里 try/except 吞掉了断言失败,Allure看到的仍是“成功”,但实际用例没跑通。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











