文章目录
Allure 前言
Allure是一个灵活的轻量级多语言测试报告工具,它不仅提供了美观且信息丰富的测试报告,还便于与持续集成(CI)系统无缝集成。
Allure是开源的,并且支持多种主流测试框架的集成,包括但不限于
Java
的JUnit
、TestNG
,以及Python
的pytest
等。
Allure
的工作原理在于,它会在测试执行期间收集测试用例的详细信息,并将这些数据保存在XML
或JSON
格式的文件中。
随后,通过Allure的命令行工具或CI插件,这些文件可以被转换成易于阅读的HTML报告。
这些报告提供了丰富的信息,如测试用例的状态、执行时间、日志输出、屏幕截图等,帮助开发团队更全面地了解测试情况,从而做出更明智的决策。
Allure 官网
allure官网: https://docs.qameta.io/allure/
pytest结合:https://allurereport.org/docs/pytest/
allure样例:https://allure-framework.github.io/allure-demo/9/
Allure 官方介绍
Allure Framework是一种灵活的轻量级多语言测试报告工具,不仅可以以简洁的Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用信息。
从开发/质量保证的角度来看,Allure报告可以缩短常见缺陷的生命周期:可以将测试失败划分为bug和损坏的测试,还可以配置
log
,step
,fixture
,attachments
,timings
,历史记录以及与TMS的集成以及Bug跟踪系统,因此负责任的开发人员和测试人员将掌握所有信息。从管理人员的角度来看,Allure提供了一个清晰的“全局”,涵盖了已涵盖的功能,缺陷聚集的位置,执行时间表的外观以及许多其他方便的事情。
Allure的模块化和可扩展性确保您始终能够微调某些东西,以使Allure更适合您。
在当前市面上所有第三方或者自研的测试报告系统中,Allure是最全面,且支持的测试框架最多的一个测试报告系统。它是开源的测试报告框架,它旨在创建让团队每一个人都清楚明了的测试报告。
Allure 报告的特点及其受推崇的原因
1. 缩短缺陷生命周期
- 从开发和质量保证的角度来看,
Allure
报告为团队提供了一个高效的工具,有助于缩短常见缺陷的生命周期。通过Allure
,团队能够更快速地识别和分类问题,从而加速问题的修复和验证。2. 细致的问题分类与信息管理
Allure
报告允许将测试失败明确地划分为bug
和损坏的测试(Broken tests)
。此外,它还支持对日志、步骤、固定装置、附件、时间、历史记录等关键信息进行细致的配置和管理。通过集成TMS
和Bug
跟踪系统,Allure
能够方便地绑定任务(Task)
与负责该任务的开发和测试人员,确保所有相关人员都能及时获取并处理所有相关信息。3. 提供清晰的全局视野
- 对于管理人员来说,
Allure
报告提供了一个清晰的全局视野,帮助他们更好地了解测试的整体情况。通过Allure
,管理人员可以清晰地看到哪些功能已经被测试覆盖,Bug
主要集中在哪些区域,以及整体和单条测试用例的执行时间表。这些信息对于制定项目决策、调整资源分配和优化开发流程至关重要。
Allure 安装与环境配置
- 安装
allure-pytest
插件- 配置
allure-python-commons
拓展(请参考第二篇文章)
pip install allure-pytest
Allure 报告生成的原理
Allure
报告的生成基于两个核心步骤,它利用标准的xUnit
结果输出并添加补充数据以提供详细的测试报告。1. 测试执行与数据收集
- 在测试执行期间,
Allure
通过一个名为Adapter
的轻量级库与测试框架集成。- 这个 Adapter 负责捕获测试执行过程中的所有关键信息,如测试用例的状态(通过、失败、跳过等)、执行时间、日志输出、屏幕截图等。这些信息随后被结构化地保存到
XML
或JSON
文件中。Allure
为多种流行的测试框架提供了预置的Adapter
,包括Python
的pytest
、Java
的JUnit
等,从而确保了广泛的兼容性和易用性。2. XML 到 HTML 报告的转换
- 一旦收集了
XML
文件中的测试数据,Allure
会将这些数据转换为人类可读的HTML
报告。- 这一转换过程可以通过多种方式实现,包括使用
持续集成(CI)
系统中的Allure
插件,或者通过命令行工具直接执行。- 转换过程不仅将原始的测试数据呈现为易于阅读的格式,还会添加额外的功能,如交互式的测试用例导航、自定义报告布局和样式、以及高级的分析和统计功能。
Allure 生成测试报告步骤一
构建
pytest
项目,安装规则编写测试用例函数
test_case_01.py
文件代码
import allure
import pytest
def test_case_01():
"""测试函数01"""
assert True
print("测试函数01执行完成")
class TestClass1:
@pytest.mark.parametrize("username,password", [["admin", "admin"], ["root", "root"], ["guest", "123456"]])
def test_case_02(self, username, password):
"""测试函数02"""
allure.attach(
body=f"用户名:{username},密码:{password}",
name="用户登录参数",
attachment_type=allure.attachment_type.TEXT
)
assert username == password, "模拟用户登录,如果用户名和密码不一致则失败"
print("测试函数02执行完成")
test_case_02.py
文件代码
import allure
import pytest
def test_case_03():
"""测试函数03"""
assert False
class TestClass2:
@pytest.mark.parametrize("v1,v2,expected", [[1, 1, 2], [2, 2, 4], [3, 3, 3]])
def test_case_04(self, v1, v2, expected):
"""测试函数04"""
allure.attach(
body=f"参数1:{v1},参数2:{v2},预期结果:{expected}",
name="求和",
attachment_type=allure.attachment_type.TEXT
)
assert v1 + v2 == expected, "两数之和与预期值不符则失败"
print("测试函数04执行完成")
Allure 生成测试报告步骤二
当使用pytest 结合Allure进行测试时,可以通过指定
--alluredir
参数来告诉Allure在哪里存储测试报告的原始数据。这些原始数据通常是JSON格式的,它们包含了测试用例的详细执行结果,以及可能的日志和附件信息。
执行以下命令:
pytest --alluredir=./report/tmp # --alluredir表示指定测试报告数据的生成路径
这条命令会执行所有默认的或指定的
pytest
测试用例,并将生成的 Allure 报告原始数据保存在当前目录下的report/tmp
文件夹中。这些 JSON 文件将包含每个测试用例的结果,以及任何相关的日志和附件。
- JSON 文件:这些是
Allure
报告的原始数据文件,包含了测试用例的详细执行信息。- TXT 文件:这些通常是日志文件,包含了测试执行过程中的详细信息,有助于开发者进行问题排查。
- ATTACH 文件:这些是附件文件,可能包含了与测试用例相关的任何额外信息,例如屏幕截图或日志文件。
Allure 生成测试报告步骤三
生成测试报告前需要将原始数据渲染成HTML页面
执行命令:
allure generate report/tmp -o report/allure-report -c report/allure-report
参数解释:
- report/tmp:每个用例的执行结果生成的每个
json
文件存放的位置,allure
最终会将这些json
文件渲染成网页结果- -o report/allure-report:
allure
报告生成后存放的位置- -c report/allure-report:
新的allure报告
生成之前先把旧的allure报告
清理掉
Allure 生成测试报告步骤四
执行完上述命令后,接着执行命令:
allure open report/allure-report
- 参数:-h, (–host):指定域名地址;
- 参数:-p, (–port):指定端口号;