Allure 是一款由 Java 语言开发的轻量级、开源自动化测试报告生成框架。它支持绝大多数主流测试框架,如 TestNG、JUnit 以及 pytest,能够生成详尽美观的测试报告,既可为测试人员提供详细的问题追溯信息,也可为管理层呈现高层次的统计概览,并且能够轻松集成到 Jenkins 等持续集成工具中。

安装与配置
要使用 Allure 生成报告,需要安装两个部分:Allure 命令行工具和 pytest 的 Allure 适配器插件。
1. 安装 Allure 命令行工具 (allure-commandline)
Allure 命令行工具是一个 Java 应用程序,因此需要提前安装 JDK 并配置好环境变量。
下载地址:https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/
选择版本进行下载,例如 allure-commandline-2.19.0.zip。
Windows 下配置:
- 解压下载的 ZIP 包。
- 将解压后
bin 目录的路径(例如 D:\allure-2.19.0\bin)添加到系统的 PATH 环境变量中。
- 打开命令提示符,输入
allure --version 验证是否安装成功。若显示版本号,则配置完成。


2. 安装 allure-pytest 插件
在您的 Python 项目环境中,使用 pip 安装 pytest 的 Allure 适配器。
pip install allure-pytest

常用命令
- 运行测试并收集结果:
pytest -s -q --alluredir=${RESULT_DIR} --clean-alluredir
- 在线查看报告(方式一):
allure serve ${RESULT_DIR}
- 生成静态报告(方式二):
allure generate ${RESULT_DIR} --clean (生成 ./allure-report 目录)
allure open ./allure-report (打开生成的报告)
实战演示:生成 Allure 报告
示例测试代码
创建一个测试文件 test_demo.py:
def test_a():
print("---test_a")
assert 1 == 2
def test_b():
print("---test_b")
assert 1 == 1
class Test01:
def test_d(self):
print("---test_d")
assert False
def test_c(self):
print("---test_c")
assert "cs" in "rebort"
步骤一:运行测试并收集结果
在项目根目录下执行以下命令,运行测试并将 Allure 结果数据收集到 ./result 目录。
pytest test_demo.py -s -q --alluredir=./result --clean-alluredir

步骤二:查看测试报告
方式一:在线服务模式
执行 allure serve ./result。此命令会启动一个本地 Web 服务并自动在浏览器中打开报告。关闭浏览器后,需要按 Ctrl+C 终止命令。


方式二:生成静态报告
- 生成最终的 HTML 报告文件:
allure generate ./result --clean
- 打开生成的报告:
allure open ./allure-report


Allure 报告结构详解
通过一个更丰富的测试示例来了解报告的各部分功能。
import pytest
class Test01:
def test_success(self):
assert 1==1
def test_fail(self):
assert 1==2
def test_skip():
pytest.skip("---skip")
@pytest.mark.xfail(1==1, reason="---xfail")
def test_xfail():
# pytest.xfail("---xfail")
1==2
def test_broken():
raise Exception("---exception")
def test_error():
assert r=="rebort"
运行命令收集结果:pytest test_demo.py -vs --alluredir ./result --clean-alluredir

打开报告 (allure serve ./result/) 后,可以看到以下主要模块(可将语言切换为中文):
-
Overview(总览):展示测试用例总数、通过率、不同状态(Passed, Failed, Broken, Skipped, Unknown)的统计,以及测试套件(Suites)和时长信息。

-
Categories(缺陷分类):默认将失败的用例分为两类:Product defects(测试失败)和 Test defects(测试错误/中断)。

-
Suites(测试套件):以树形结构展示所有测试用例,可以按照包(package)、模块(module)、类(class)、方法(method)的层级进行查看和筛选。

-
Graphs(图表):以图形化方式展示测试结果,包括不同状态用例的比例、优先级分布、测试耗时等。

-
Timeline(时间线):可视化展示每个测试用例的执行顺序和具体耗时。

-
Behaviors(行为驱动):可根据 Epic、Feature、Story 等标签对测试用例进行分组(下文示例未分组,默认显示函数名)。

-
Packages(包视图):按照 Python 的包和模块结构来分组展示测试用例。

补充:Fixture(固件)在报告中的展示
Allure 报告能够清晰地展示测试用例执行过程中 fixture 的调用情况。
import pytest
@pytest.fixture()
def login():
print("---前置:登录")
yield
print("---后置:退出")
def test_a(login):
print("--------------test_a")
在报告的测试用例详情中,可以查看到 SETUP 和 TEARDOWN 阶段,对应 fixture 的执行信息。
