Pytest框架之 - Allure特性之定制测试报告

本文介绍了如何使用Pytest框架与Allure报告工具,通过@allure修饰测试用例来定制详细的结果展示。内容涵盖epic、feature、story、title的结构,测试用例的描述和步骤,链接的添加,附件的插入,以及动态修改测试报告的技巧,以提升测试报告的可读性和信息完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pytest支持使用@allure的一些方法修饰测试用例, 使测试用例在allure报告中能够更加详细的显示测试过程

定制结果展示

blog_138_01.png

 


@allure.epic:敏捷里面的概念,定义史诗;  下层是feature

@allure.feature:功能点的描述,理解成模块;  下层是story

@allure.story:故事;  下层是title

@allure.title:用例标题;  最底层

epic、feature、story和title示例

#!/usr/bin/python3.6
# coding=utf-8
# Author: 文

import pytest
import allure

@allure.epic("全局")                                  # 史诗,最顶层
@allure.feature("登录模块")                            # 测试用例特性,主要功能模块
class Test_Login():
    @allure.title("登录成功")                          # 测试用例标题,最底层
    @allure.story("成功登录")                          # 主功能模块下的分支功能
    def test_01(self):
        print("-----> test_01")

    @allure.title("账号不存在")                         # 测试用例标题,最底层
    @allure.story("登录失败")                           # 功能模块下的分支功能
    def test_02(self):
        print("-----> test_02")

    @allure.title("密码错误")                           # 测试用例标题,最底层
    @allure.story("登录失败")                           # 功能模块下的分支功能
    def test_03(self):
        print("-----> test_03")

@allure.epic("全局")                                   # 史诗,最顶层
@allure.feature("作业模块")                             # 测试用例特性,主要功能模块
class Test_Work():
    @allure.title("审批作业")                           # 测试用例标题,最底层
    @allure.story("审批作业")                           # 功能模块下的分支功能
    def test_04(self):
        print("-----> te
<think>我们正在比较pytest-html和Allure两种测试报告工具。根据引用内容,我们可以总结如下: 1. pytest-html是pytest的一个插件,可以生成HTML格式的测试报告。 2. Allure是一个独立的测试报告框架,支持多种测试框架(包括pytest),可以生成更美观、交互性更强的测试报告。 接下来,我们将从多个维度对比两者的区别: ### 1. 报告外观与交互性 - **pytest-html**:生成静态HTML报告,界面相对简单,直观,但美观度和交互性有限。报告以表格形式展示测试结果,支持展开查看详细日志[^1]。 - **Allure**:生成现代化、动态的网页报告,具有丰富的交互功能。支持图表展示(如趋势图、饼图)、测试用例分类(按特性、优先级等)、历史记录对比等,视觉效果更专业[^3][^4]。 ### 2. 功能特性 | 特性 | pytest-html | Allure | |---------------------|-------------|--------| | 自定义样式 | ✅ 支持自定义CSS | ✅ 支持主题和自定义 | | 截图嵌入 | ✅ 支持 | ✅ 支持(且可附加到测试步骤) | | 日志嵌入 | ✅ 支持 | ✅ 支持(按步骤展示) | | 历史趋势 | ❌ 不支持 | ✅ 支持(需与CI集成) | | 环境信息 | ✅ 支持 | ✅ 支持(更详细) | | 测试分类 | ❌ 不支持 | ✅ 支持(epic/feature/story等) | | 失败用例重试 | ❌ 不支持 | ✅ 支持(展示重试历史) | ### 3. 集成复杂度 - **pytest-html**:安装简单(`pip install pytest-html`),无需额外服务,生成报告即单HTML文件[^1]。 - **Allure**: - 需要安装Java环境(Allure基于Java) - 安装Allure命令行工具和`allure-pytest`插件 - 生成报告需两步:先产出结果文件,再生成HTML报告[^3] ### 4. 适用场景 - **pytest-html**:适合快速生成简单报告,内网环境或无Java环境的场景[^2]。 - **Allure**:适用于需要深度分析测试结果、展示给非技术人员(如管理层)或长期追踪测试质量的场景[^4]。 ### 总结建议 | 需求 | 推荐工具 | |---------------------|--------------| | 快速生成简易报告 | pytest-html | | 需要丰富交互和图表 | Allure | | 无Java环境 | pytest-html | | 与CI工具深度集成 | Allure | > 注:两者可同时使用,例如在CI中既生成pytest-html报告用于即时查看,又生成Allure报告用于归档分析。 §§相关问题§§ 1. 如何在无Java环境的服务器上生成Allure报告? 2. pytest-html如何自定义报告中的公司Logo? 3. Allure报告如何集成到Jenkins持续集成流程中? 4. 两种报告在测试失败时展示的日志细节有何不同?</think>### pytest-html 与 Allure 测试报告的核心区别对比 以下是两种测试报告框架的核心差异对比: | **对比维度** | **pytest-html** | **Allure** | |--------------------|----------------------------------------------|-----------------------------------------------| | **报告定位** | 轻量级基础报告 | 企业级可视化报告 | | **安装复杂度** | ⭐ 简单(仅Python包) | ⭐⭐⭐ 需Java环境+命令行工具[^3] | | **报告视觉效果** | 基础表格布局 | 现代化交互式面板(支持图表/时间线/分类)[^4] | | **数据维度** | 基础测试结果/耗时 | 支持历史趋势/环境数据/行为分类[^1] | | **定制能力** | CSS样式覆盖 | 完整主题引擎+插件体系 | | **多框架支持** | ❌ 仅限pytest | ✅ TestNG/JUnit/pytest等[^1] | | **日志集成** | 文本日志展示 | 步骤化日志+附件嵌入(截图/文本)[^2] | | **CI/CD集成** | 直接生成HTML | Jenkins插件+趋势分析[^2] | | **典型文件大小** | 100-500KB | 2MB+(含资源文件) | --- ### 适用场景建议 #### 🟢 选择 **pytest-html** 当: 1. 需要快速生成基础报告 2. 无Java环境的受限场景 3. 简单项目无需历史追踪 4. 内网环境需要单文件报告[^2] #### 🚀 选择 **Allure** 当: 1. 需要专业级可视化报告 2. 团队协作需要历史趋势对比 3. 复杂测试需要行为分类(Epic/Feature/Story) 4. 与CI工具深度集成(如Jenkins) 5. 需要添加测试截图/日志附件[^4] --- ### 技术实现对比示例 #### pytest-html 报告生成 ```python # 生成基础HTML报告 pytest.main(["--html=report.html", "--self-contained-html"]) ``` #### Allure 报告生成 ```python # 需要两步操作 pytest.main(["--alluredir=./allure-results"]) # 1. 生成原始数据 os.system("allure generate ./allure-results -o ./report --clean") # 2. 编译报告 ``` > **关键区别**:Allure 通过分离数据收集和报告生成,支持跨项目数据聚合和趋势分析,而 pytest-html 是静态快照报告[^1][^4]。 --- ### 可视化效果对比 - **pytest-html**: ![基础表格布局](https://example.com/pytest-html-screenshot.png) *简单的测试结果汇总表格* - **Allure**: ![交互式仪表盘](https://example.com/allure-dashboard.png) *包含饼图、趋势线和分类过滤器的交互面板[^4]*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SitVen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值