找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1248

积分

0

好友

184

主题
发表于 4 天前 | 查看: 26| 回复: 0

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

Allure报告概览

安装与配置

要使用 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 下配置

  1. 解压下载的 ZIP 包。
  2. 将解压后 bin 目录的路径(例如 D:\allure-2.19.0\bin)添加到系统的 PATH 环境变量中。
  3. 打开命令提示符,输入 allure --version 验证是否安装成功。若显示版本号,则配置完成。

Windows环境变量配置
验证Allure安装

2. 安装 allure-pytest 插件

在您的 Python 项目环境中,使用 pip 安装 pytest 的 Allure 适配器。

pip install allure-pytest

安装allure-pytest插件

常用命令

  • 运行测试并收集结果pytest -s -q --alluredir=${RESULT_DIR} --clean-alluredir
  • 在线查看报告(方式一)allure serve ${RESULT_DIR}
  • 生成静态报告(方式二)
    1. allure generate ${RESULT_DIR} --clean (生成 ./allure-report 目录)
    2. 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 终止命令。

启动allure serve
Allure报告界面

方式二:生成静态报告

  1. 生成最终的 HTML 报告文件:allure generate ./result --clean
  2. 打开生成的报告: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/) 后,可以看到以下主要模块(可将语言切换为中文):

  1. Overview(总览):展示测试用例总数、通过率、不同状态(Passed, Failed, Broken, Skipped, Unknown)的统计,以及测试套件(Suites)和时长信息。
    Overview总览

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

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

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

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

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

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

补充:Fixture(固件)在报告中的展示

Allure 报告能够清晰地展示测试用例执行过程中 fixture 的调用情况。

import pytest

@pytest.fixture()
def login():
    print("---前置:登录")
    yield
    print("---后置:退出")

def test_a(login):
    print("--------------test_a")

在报告的测试用例详情中,可以查看到 SETUPTEARDOWN 阶段,对应 fixture 的执行信息。
Fixture在报告中的展示




上一篇:MySQL InnoDB存储引擎碎片整理全攻略:原理、实战与高并发场景避坑
下一篇:Redis性能优化实战:大数据高并发场景下的2000万QPS扛压策略与架构选型
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 18:47 , Processed in 0.122926 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表