Allure 内置特性

章节目录:

    • 一、内置特性概述
    • 二、展示环境信息
    • 三、测试结果分类
    • 四、用例步骤说明
    • 五、添加附件
    • 六、添加用例描述
    • 七、设置动态的用例标题
    • 八、报告中添加链接
    • 九、组织测试结果
      • 9.1 使用与理解
      • 9.2 指定运行
    • 十、划分用例级别
    • 十一、动态生成附加信息
    • 十二、清空历史报告记录
    • 十三、生成静态样式报告
    • 十四、结束语

一、内置特性概述

  • “Allure 的内置特性” 指的是 Allure 测试报告框架本身提供的功能和功能组件
  • 这些内置特性是在 Allure 框架中内置的,可以直接使用而无需额外的配置或定制。
  • 这些内置特性使得 Allure 成为一个强大而灵活的测试报告框架,有助于生成具有可视化效果和丰富信息的测试报告,提供更好的测试结果分析和问题排查能力

二、展示环境信息

在 Allure 报告中,environment.properties 是一个用于定义测试环境信息的配置文件。该文件可以包含各种与测试环境相关的属性和值,如操作系统、浏览器版本、测试数据等。这些信息将被包含在报告中,以提供关于测试运行环境的上下文信息。

  • 展示的位置

  • 在 allure 测试结果目录创建 environment.properties 文件。

  • 配置信息

Browser=Chrome(119.0.6045.124)
Python=3.8
  • 重启服务
# test-results 为收集测试结果的目录。
allure serve test-results
  • 查看展示

三、测试结果分类

在 Allure 报告中,categories.json 是一个用于定义测试结果分类和筛选的配置文件。该文件可以帮助你在报告中将测试用例按照不同的维度进行分类和过滤,以便更好地组织和分析测试结果。

  • 在 allure 报告目录创建 categories.json 文件。
  • categories.json 结构
[{"name":"Category Name","matchedStatuses":["status1","status2"],"messageRegex":"regex pattern","traceRegex":"regex pattern"}
]
  • name分类的名称,用于在报告中显示。
  • matchedStatuses匹配的测试结果状态列表。只有匹配到指定状态的测试结果才会被包含在该分类中。状态可以是 Allure 报告中定义的标准状态,如 passedfailedbrokenskipped 等,也可以是自定义的状态。
  • messageRegex(可选):一个正则表达式模式,用于匹配包含特定信息的测试结果。只有测试结果的消息文本与该正则表达式匹配时,才会被包含在该分类中。
  • traceRegex(可选):一个正则表达式模式,用于匹配包含特定堆栈跟踪信息的测试结果。只有测试结果的堆栈跟踪文本与该正则表达式匹配时,才会被包含在该分类中。
  • 配置示例
[{"name": "忽略的用例", "matchedStatuses": ["skipped"] },{"name": "产品缺陷","matchedStatuses": ["failed"]},{"name": "用例本身问题","matchedStatuses": ["broken"]}
]
  • 重启服务,查看展示

四、用例步骤说明

@allure.step() 是 Allure 框架提供的一个装饰器,可以将一个方法或函数标记为测试步骤。它有助于通过将测试用例拆分为较小的可管理步骤来组织和记录测试。

  • 代码示例
import allure@allure.step("步骤1:登录系统")
def login(username, password):pass@allure.step("步骤2:进行搜索")
def search(keyword):pass@allure.step("步骤3:验证结果")
def verify_result():passdef test_example_01():# 使用步骤login("username", "password")search("keyword")verify_result()assert 1 + 1 == 2def test_example_2():assert 1 + 1 == 3
  • 重新收集测试结果,并启动服务
pytest --alluredir=test-resultsallure serve test-results
  • 查看展示

五、添加附件

allure.attach() 是 Allure 框架提供的一个函数,用于在测试报告中添加附件。它可以用于添加任何类型的文件、截图、日志等与测试相关的附件信息。

  • 代码示例
import alluredef test_example():# 执行一些测试步骤。assert 1 + 1 == 2# 1.添加文件作为附件。allure.attach.file("log/test.log", name="test.log", attachment_type=allure.attachment_type.TEXT)allure.attach.file("imgs/1.png", name="1.png", attachment_type=allure.attachment_type.PNG)# 创建带有超链接的文本。link_text = '<a href="https://www.baidu.com">baidu</a>'# 2.添加带有超链接的文本作为附件。allure.attach(link_text, name='Example Link', attachment_type=allure.attachment_type.HTML)
  • 重新收集测试结果,并启动服务
pytest --alluredir=test-resultsallure serve test-results
  • 查看展示

六、添加用例描述

@allure.description() 是一个装饰器,可以用于添加描述信息到 Allure 报告中的测试用例。此外,也可以通过在函数下方添加注释达到一样的效果。

  • 代码示例
import allure@allure.description("这是 test_example_01 的描述。")
def test_example_01():assert 1 + 1 == 2def test_example_02():"""这是 test_example_02 的描述。"""assert 1 + 1 == 2
  • 重新收集测试结果,并启动服务
pytest --alluredir=test-resultsallure serve test-results
  • 查看展示

七、设置动态的用例标题

@allure.title() 是一个装饰器,用于为 Allure 报告中的测试用例设置标题。

  • 代码示例
import allure
import pytest# 1.测试数据。
data = [["正向用例", "root", 666666],["密码错误", "root", 888888],["用户名传空", "", 888888],
]# 2.执行测试时,参数化标题名。
@allure.title("登录: {title}")
@pytest.mark.parametrize("title,user_name,password", data)
def test_login(title, user_name, password):user_name = str(user_name)password = int(password)assert user_name == "root" and password == 666666
  • 重新收集测试结果,并启动服务
pytest --alluredir=test-resultsallure serve test-results
  • 查看展示

八、报告中添加链接

@allure.link() 是一个装饰器,用于在 Allure 报告中添加链接。

  • 代码示例
import allure@allure.link("https://www.baidu.com", name="这是普通的网站访问链接。")
def test_example_01():assert 1 + 1 == 2@allure.link("https://www.zentao.net", name="这是禅道的缺陷管理链接。")
def test_example_02():assert 1 + 1 == 2@allure.link("https://testlink.org/", name="这是用例管理平台的用例链接。")
def test_example_03():assert 1 + 1 == 2
  • 重新收集测试结果,并启动服务
pytest --alluredir=test-resultsallure serve test-results
  • 查看展示

九、组织测试结果

@allure.epic(), @allure.feature()@allure.story() 是 Allure 的特性标签,用于在测试报告中提供更多的上下文信息,以便更好地组织和理解测试结果。

9.1 使用与理解

  • 代码示例
import allure@allure.epic("1号项目")
@allure.feature("登录模块")
class TestLogin:@allure.story("登录用例-01")def test_case_01(self):assert True@allure.story("登录用例-02")def test_case_02(self):assert False@allure.epic("1号项目")
@allure.feature("商城模块")
class TestCommodity:@allure.story("商城用例-01")def test_case_01(self):assert False@allure.epic("2号项目")
@allure.feature("搜索模块")
class TestSearch:@allure.story("搜索用例-01")def test_case_01(self):assert True
  • 重新收集测试结果,并启动服务
pytest --alluredir=test-resultsallure serve test-results
  • 查看展示

  • epic 是最高级别的概念,表示整个项目或产品的大型功能或目标;

  • feature 是在 epic 下的子级别,表示产品的功能模块

  • 而 story 是在 feature 下的子级别,表示具体的用户故事或需求

  • 测试用例可以属于一个 epic、一个 feature 或一个 story。

  • 通过使用这些装饰器,可以将测试用例组织和分类到不同的 epic、feature 和 story 中,从而更好地组织和展示测试报告,提供更清晰和结构化的测试结果

9.2 指定运行

可以使用命令行方式指定运行特定的 epic、feature 或 story。

  • 示例
# 指定 epics 运行。
pytest --alluredir=test-results --allure-epics="1号项目"# 指定 feature 运行。
pytest --alluredir=test-results --allure-features="登录模块"# 指定 story 运行。
pytest --alluredir=test-results --allure-stories="登录用例-02","搜索用例-01"# 指定 feature + story。
pytest --alluredir=test-results --allure-features="登录模块" --allure-stories="搜索用例-01"

十、划分用例级别

@allure.severity 是 Allure-pytest 插件提供的一个装饰器,用于定义测试用例的严重程度或优先级。通过指定不同的严重程度,可以将测试用例分类为不同的优先级,以便更好地管理和报告测试结果。

  • 常用的严重程度包括

    • blocker阻塞级别,表示测试用例的失败会阻塞系统的正常功能。
    • critical关键级别,表示测试用例的失败会导致系统的关键功能受影响。
    • normal普通级别,表示测试用例的失败对系统的功能影响较小。
    • minor次要级别,表示测试用例的失败对系统的功能影响很小。
    • trivial微不足道级别,表示测试用例的失败对系统的功能影响几乎可以忽略。
  • 代码示例

import alluredef login():return Falsedef registration():return True@allure.severity("critical")
def test_login():assert login() == True@allure.severity("normal")
def test_registration():assert registration() == True
  • 重新收集测试结果,并启动服务
pytest --alluredir=test-resultsallure serve test-results
  • 查看展示

  • 类似地,也可以命令行指定优先级运行
# 只运行 critical 的测试用例。(多个级别用逗号拼接)
pytest --alluredir=test-results --allure-severities=critical

十一、动态生成附加信息

allure.dynamic 是 Allure 报告中的一个装饰器,用于在测试执行期间动态生成附加信息( attachments )。它允许您在测试运行期间生成、更新或删除附加信息,并将其与测试用例关联。

  • 支持动态修改的方法,例如
allure.dynamic.feature
allure.dynamic.link
allure.dynamic.issue
allure.dynamic.testcase
allure.dynamic.story
allure.dynamic.title
allure.dynamic.description
  • 代码示例
import allure@allure.title("装饰器标题")
def test_example():assert Trueallure.dynamic.title("动态标题")
  • 重新收集测试结果,并启动服务
pytest --alluredir=test-resultsallure serve test-results
  • 查看展示

  • 这种方式适用于在测试函数中无法提前获得或准备好的数据,或者需要在测试运行期间生成动态内容的情况。

十二、清空历史报告记录

在使用 pytest 运行测试用例生成 Allure 报告时,如果测试用例的名称修改后重新运行,或者分别运行不同的测试用例文件但将 Allure 报告生成到同一个目录,Allure 报告会保留历史运行记录并同时显示两个文件的测试用例运行情况。

  • --clean-alluredir 是 Allure-pytest 插件提供的一个命令行参数,用于清空 Allure 报告生成目录中的历史数据和文件。
  • 示例
pytest --alluredir <报告目录路径> --clean-alluredir
  • 注意:使用 --clean-alluredir 参数会删除报告目录中的所有文件和子目录,包括历史报告、附件和其他生成的文件。确保在使用此参数之前备份重要的报告数据,以防止数据丢失

十三、生成静态样式报告

上面都是基于 .json 测试结果文件动态生成的报告。接下来我们可以通过更加完整的命令,生成静态样式的报告文件。

  • 命令示例
# 1.初始化生成测试结果。
pytest --alluredir=test-results --clean-alluredir# 2.生成 allure 的 html 报告。
# 将位于 test-results 目录下的测试结果数据生成 Allure 报告,并将报告文件保存到 allure-report 目录中。
# -c:在生成之前,会先清除报告目录中的旧文件。
allure generate -c test-results allure-report# 3.打开 allure 报告。
allure open allure-report# 4.关闭服务。
ctrl + c
输入 "y" 或者 "Y"
  • 生成的报告

  • 当然,也能直接点击 index.html 打开报告。

十四、结束语


“-------怕什么真理无穷,进一寸有一寸的欢喜。”

微信公众号搜索:饺子泡牛奶

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/246955.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GitHub项目推荐--如何构建项目】【转载】

这是一个 138K Star 的开源项目&#xff0c;这个仓库汇集了诸多优质资源&#xff0c;教你如何构建一些属于自己的东西&#xff0c;内容主要分为增强现实、区块链、机器人、编辑器、命令行工具、神经网络、操作系统等几大类别。 开源地址&#xff1a;https://github.com/danist…

vue 样式隔离原理

日常写单文件组件时&#xff0c;会在style添加scoped属性&#xff0c;如<style scoped>&#xff0c;目的是为了隔离组件与组件之间的样式&#xff0c;如下面的例子&#xff1a; <template><p class"foo">这是foo</p><p class"bar&q…

ubuntu下docker卸载和重新安装

卸载&#xff1a;步骤一&#xff1a;停止Docker服务 首先&#xff0c;我们需要停止正在运行的Docker服务。打开终端&#xff0c;执行以下命令&#xff1a; sudo systemctl stop docker 步骤二&#xff1a;删除Docker安装包 接下来&#xff0c;我们需要删除已经安装的Docker软件…

微信小程序如何自定义单选和多选

实现单选 实现效果:点击显示单选状态,每次仅能点击一个元素。 实现方式: wxml: <view wx:for="{{item_list}}" data-info="{{index}}" class="{{menu_index===index?choose:no_choose}}" bind:tap="changeColor">{{ite…

25考研每日的时间安排

今天要给大家分享一下25考研每日的时间安排。 没有完美的计划&#xff0c;只有合适的计划。 仅供参考 很多人说复习不要只看时长而是要看效率&#xff0c;所以学多长时间不重要&#xff0c;重要的高效率完成任务。 完美的计划 这个计划看起来很完美&#xff0c;从早到晚有学习…

尚无忧球馆助教系统源码,助教小程序源码,助教源码,陪练系统源码

特色功能&#xff1a; 不同助教服务类型选择 助教申请&#xff0c;接单&#xff0c;陪练师入住&#xff0c;赚取外快 线下场馆入住 设置自己服务 城市代理 分销商入住 优惠券 技术栈&#xff1a;前端uniapp后端thinkphp 独立全开源

【C++基础】析构函数和构造函数面试知识点总结

&#x1f308;欢迎来到C基础专栏 &#x1f64b;&#x1f3fe;‍♀️作者介绍&#xff1a;前PLA队员 目前是一名普通本科大三的软件工程专业学生 &#x1f30f;IP坐标&#xff1a;湖北武汉 &#x1f349; 目前技术栈&#xff1a;C/C、Linux系统编程、计算机网络、数据结构、Mysq…

大脑的漏洞:你是如何走向狭隘和顽固的?

在这篇文章的最开始&#xff0c;我想请大家思考一个问题&#xff1a; 为什么谣言的传播总是非常容易&#xff0c;但辟谣却一点也不容易呢&#xff1f; 有一个非常简单的答案&#xff0c;你或许立刻就能想到&#xff1a;因为谣言一般都非常简单&#xff0c;但辟谣一般都不怎么简…

linux安装docker--更具官网教程

1.访问https://docs.docker.com/ 2.进入download 3输入cento 或者直接访问地址Install Docker Engine on CentOS | Docker Docs 4一步一步根据官网命令走 2安装 3 4 方式一&#xff1a; service docker start&#xff08;开启&#xff09; service docker status&#xff08…

如何使用 NFTScan API 检索 NFT 合约地址下 Transactions 数据

对于大多数人而言&#xff0c;获取某 NFT 合约地址下的全量交易记录是十分有挑战性的&#xff0c;不仅涉及到对区块链技术的深入了解以及使用相应的工具和资源&#xff0c;还需要处理区块链上的智能合约和交易数据&#xff0c;并将其与外部数据源进行整合分析。通常&#xff0c…

简单介绍----微服务和Spring Cloud

微服务和SpringCloud 1.什么是微服务&#xff1f; 微服务是将一个大型的、单一的应用程序拆分成多个小型服务&#xff0c;每个服务负责实现特定的业务功能&#xff0c;并且可以通过网络通信与其他服务通信。微服务的优点是开发更灵活&#xff08;不同的微服务可以使用不同的开…

「研发部」GitFlow规范-升级版(二)

前言 上一篇文章简单整理过一次产研团队的GitFlow《Git 分支管理及Code Review 流程 (一)》 GitFlow是一种流行的Git分支管理策略&#xff0c;它提供了一种结构化的方式来管理项目的开发和发布流程。以下是GitFlow规范的主要组成部分&#xff1a; 主要分支&#xff1a; mast…

Mybatis-Plus入门

Mybatis-Plus入门 MyBatis-Plus 官网&#xff1a;https://mp.baomidou.com/ 1、简介 MyBatis-Plus (简称 MP) 是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、 提高效率而生。 https://github.com/baomidou/mybatis-p…

python数据类型-字符串

1 表示方式 python单行字符串用单引号’内容’或双引号"内容"表示&#xff0c; 多行字符串用三引号表示&#xff0c;‘’‘换行内容’或"““换行内容””"&#xff0c; str()函数可将其它类型转换为字符串类型 a henry b "Tom" c 窗前明月…

什么是协方差矩阵?

协方差矩阵&#xff08;Covariance Matrix&#xff09;是一个用于衡量多个变量之间相互关系的工具&#xff0c;在统计学和数据分析领域中非常重要。这个矩阵展现了每一对变量之间的协方差。协方差是衡量两个变量如何一起变化的度量&#xff1b;如果两个变量的协方差是正的&…

C/C++ - Auto Reference

目录 auto Reference auto 当使用auto​​关键字声明变量时&#xff0c;C编译器会根据变量的初始化表达式推断出变量的类型。 自动类型推断&#xff1a;auto​​关键字用于自动推断变量的类型&#xff0c;使得变量的类型可以根据初始化表达式进行推导。 初始化表达式&#x…

oracle19.22的patch已发布

2024年01月16日&#xff0c;oracle发布了19.22的patch 具体patch如下 Reserved for Database - Do not edit or delete (Doc ID 19202401.9) 文档ID规则如下 19&#xff08;版本&#xff09;年份&#xff08;202x&#xff09;(季度首月01,04,07,10).9 往期patch no信息和下…

[论文阅读] |RAG评估_Retrieval-Augmented Generation Benchmark

写在前面 检索增强能够有效缓解大模型存在幻觉和知识时效性不足的问题&#xff0c;RAG通常包括文本切分、向量化入库、检索召回和答案生成等基本步骤。近期组里正在探索如何对RAG完整链路进行评估&#xff0c;辅助阶段性优化工作。上周先对评估综述进行了初步的扫描&#xff0…

每次请求sessionid变化【SpringBoot+Vue】

引言&#xff1a;花了一晚上的时间&#xff0c;终于把问题解决了&#xff0c;一开始后端做完后,用apifox所有接口测试都是可以的,但当前端跑起来后发现接收不到后端的数据。 当我写完前后端&#xff0c;主页面和获取当前页面信息接口后&#xff0c;配置了cros注解 CrossOrigin…

支持向量机(SVM)详解

支持向量机&#xff08;support vector machines&#xff0c;SVM&#xff09;是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器&#xff0c;间隔最大使它有别于感知机。 1、线性可分支持向量机与硬间隔最大化 1.1、线性可分支持向量机 考虑一个二分…