一、环境准备:安装 Allure 工具包
Allure 需要独立的命令行工具才能生成报告。请按照以下步骤下载并配置:
-
下载 Allure 命令行工具
访问 Maven 仓库选择对应版本(本文以 2.27.0 为例):
repo.maven.apache.org/maven2/io/q...下载
allure-commandline-2.27.0.zip文件。 -
解压并配置环境变量
将压缩包解压到本地目录(例如
D:\allure-2.27.0),然后将bin文件夹的路径(如D:\allure-2.27.0\bin)添加到系统的 PATH 环境变量中。安装步骤可参考:CSDN 详细教程
-
验证安装
打开命令行,输入
allure --version,若显示版本号则安装成功。
二、安装 Pytest Allure 插件
Pytest 需要通过 allure-pytest 插件将测试结果输出为 Allure 能识别的格式。执行以下命令安装:
bash
pip install allure-pytest
三、在测试用例中使用 Allure 注解
Allure 提供了丰富的注解,帮助你在报告中生成结构化的描述。以下是一些常用注解的示例:
python
python
import allure
@allure.feature("用户管理模块") # 功能模块
@allure.story("获取用户列表接口") # 子功能/场景
@allure.title("测试用例1:正常获取列表") # 用例标题
@allure.description("执行参数:page=1, size=10") # 用例描述
def test_get_user_list():
# 测试代码
pass
提示 :更多注解(如
@allure.severity、@allure.issue、@allure.link等)可查阅官方文档,按需使用。
四、运行测试并生成 Allure 原始数据
在运行 Pytest 时,通过 --alluredir 参数指定存放 Allure 原始结果文件的目录:
bash
ini
pytest --alluredir=./allure-results
执行后,当前目录下会生成 allure-results 文件夹,里面包含 .json 等格式的原始数据。
五、生成并查看 HTML 报告
1. 生成 HTML 报告
使用 Allure 命令行工具将原始数据转换为最终的 HTML 报告:
bash
bash
allure generate ./allure-results -o ./allure-report --clean
./allure-results:原始数据目录-o ./allure-report:指定输出报告的目录--clean:若报告目录已存在,先清空
2. 查看报告
生成的 HTML 报告是静态文件,但不能直接双击打开(会出现跨域等问题)。需要用 Allure 自带的 HTTP 服务器启动服务:
bash
arduino
allure open ./allure-report
执行后会启动一个本地 Web 服务(默认地址 http://localhost:xxxx),自动在浏览器中打开报告页面。
六、常见问题:断言失败为何被标记为 Broken?
在实际使用中,可能会遇到一个困扰:原本应该是 Failed (断言失败)的用例,在 Allure 报告中却被标记为 Broken (通常是代码执行异常)。这是因为 Allure 默认将 未捕获的异常 视为 Broken,而将 断言失败 视为 Failed。如果你在封装断言时自定义了异常类,且没有继承自 AssertionError,Allure 就无法识别为断言失败。
问题重现
假设你有一个自定义的断言类 assertions.py:
python
python
class CustomAssertionError(Exception):
"""自定义断言异常,但未继承 AssertionError"""
pass
在测试中使用该异常抛出断言失败,Allure 会将其归类为 Broken。
解决方案
让自定义断言异常继承 AssertionError,这样 Allure 就能正确识别为 Failed:
python
python
class CustomAssertionError(AssertionError):
"""自定义断言异常,继承内置 AssertionError,用于区分断言失败和其他错误"""
pass
然后在断言失败时抛出该异常:
python
python
if actual != expected:
raise CustomAssertionError(f"期望值 {expected},实际值 {actual}")
修改后重新运行测试,Allure 报告中就会正确显示为 Failed 了。
七、集成 YAML 测试数据(可选)
如果你使用 YAML 文件管理测试数据(例如测试用例、参数化数据),可以结合 pytest-yaml 插件或自定义 fixture 读取 YAML,再与 Allure 注解配合。例如:
python
python
import allure
import yaml
@allure.feature("用户管理")
@allure.story("批量创建用户")
@allure.title("从 YAML 文件读取测试数据")
def test_create_users_from_yaml():
with open("test_data/users.yaml", encoding="utf-8") as f:
data = yaml.safe_load(f)
# 循环执行测试...
这样既能保持数据与代码分离,又能利用 Allure 生成清晰的报告。
总结
通过以上步骤,你已经成功搭建了 Pytest + Allure 的自动化测试报告体系。从环境配置、注解使用、报告生成到常见问题排查,每一步都经过实践验证。现在,你可以轻松生成美观的测试报告,并让团队一目了然地看到测试结果。如果遇到其他问题,欢迎留言交流! 部分内容来自网络,进行过新增和修改。