python基础(11)《Allure报告中的组件用法》

使用

官方教程:https://docs.qameta.io/allure

入门

想要看到allure报告,需要做2个步骤: 1、pytest执行时关联allure:pytest命令带上--alluredir 结果存放目录--alluredir=结果存放目录; 2、打开执行报告:allure serve 结果存放目录

文件目录如下:

test_allure.py文件代码如下:

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6def test_add_positive():assert 1 + 3 == 4def test_add_negative():assert -1 + -3 == -4

main.py文件代码如下:

import osimport pytest
import timeif __name__ == '__main__':#使用pytext-html生成测试报告# pytest.main(['-v','--html=测试报告.html','./'])#使用allure生成测试报告pytest.main(["./","-sv", "--alluredir", "./report/temp_jsonreport"])os.system("allure generate ./report/temp_jsonreport -o ./report/html --clean")'''具体:1、"./"这个是你测试用例的路径,比如我的所有的测试用例都在这个文件夹下,这个文件下又有很多每个用例的文件夹,那你如果想执行所有的用例就写到"./"这个路径就可以了,如果是想要执行这个文件下的某个用例,就写到具体的那个文件的路径。2、-s表示结果显示。-v表示显示详细用例2、"--alluredir"这个是创建allure报告的路径。3、-o是执行,--clean是清除之前生成的报告。main.py整理好了,可以执行main文件,用例执行完成后,在report文件夹下会有两个文件夹:html、temp_jsonreport。在html这个文件夹下,找到index.html文件,这个就是我们生成的测试报告,右键用浏览器打开就可以看到了。'''

执行后的效果如下:

allure报告如下:

效果如下:

allure装饰器

allure提供了一些装饰器,比较常用的如下:

@Epic:用于定义测试用例所属的史诗(Epic)级别,通常用于对测试用例进行分类和组织。
@Feature:用于定义测试用例所属的特性(Feature)级别,通常用于对测试用例进行更详细的分类和组织。
@Story:用于定义测试用例所属的故事(Story)级别,通常用于对测试用例进行更详细的描述和组织。
@Severity:用于定义测试用例的严重程度,可以是BLOCKER、CRITICAL、NORMAL、MINOR或TRIVIAL等级别。
@Description:用于为测试用例添加描述信息,可以提供更详细的说明和背景信息。
@Step:用于定义测试用例中的一个步骤,可以在报告中展示每个步骤的执行情况和结果。
@Attachment:用于添加附件到测试报告中,可以是截图、日志文件等。
@Link:用于添加链接到测试报告中,可以是相关文档、需求或其他资源的链接。
@Issue:用于添加缺陷或问题的链接到测试报告中。
@TmsLink:用于添加测试管理系统(Test Management System)中的链接到测试报告中。

方法

参数值

参数说明

@allure.epic(*epics)

epic描述

定义项目,当由多个项目时使用,一般传参一个字符串,表示项目名称。往下时feature

@allure.feature(*features)

分支

用例按照模块区分(类似于一个业务分了几个步骤/功能),一般传参一个字符串,表示分支名称。

@allure.story(*stories)

故事

类似于场景(即一个功能分为几个方面去验证),一般传参一个字符串,表示场景名称。

@allure.title(test_title)

用例标题

给指定的用例设置名称,在测试报告中,展示的用例名称不是函数名称,是设置的test_title

@allure.testcase(url, name=None)

用例相关链接

设置用例存放的地址,方便访问对应用例详情,name不为None时,文本显示为name,否则显示用例所在url

@allure.issue(url, name=None)

缺陷地址

对应缺陷管理系统里的缺陷地址,用法于testcase的类似

@allure.description(test_description)

用例描述

test_description参数里说明了当前用例的详细内容,比如说前置条件、验证场景、预期结果等需要关注的内容

@allure.link(url, link_type='link', name=None)

定义连接

用于定义一个需要在测试报告中展示的连接,url和name参数逻辑与allure.testcase()的一致,link_type默认是link,可为issue、test_case,设置为issue

allure.attach(body, name=None,attachment_type=None,extension=None)

按照附件形式添加展示

将python对象按照指定的附件类型展示在报告中,可支持的attachment_type(附件类型)在allure.attachment_type

allure.attach.file(source, name=None, attachment_type=None, extension=None)

添加附件

将文件按照指定的附件类型读取并展示到报告中,可支持的attachment_type(附件类型)在allure.attachment_type

1、@allure.epic(*epics)和@allure.feature(*features)

在`pytest`中,使用Allure报告来增加测试报告的信息量是一种常见做法。`@allure.epic()`注解用于标识测试用例属于哪个较高层次的特性或者功能模块,比如一个项目被划分为多个模块或者服务,每个模块或服务可以视为一个`epic`。

在pytest中使用Allure报告时,`@allure.epic`和`@allure.feature`注解(或装饰器)用于组织和分类测试用例,帮助生成更加结构化和详细的测试报告。

示例:

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import allure
import pytest# 使用@allure.epic装饰器来标注测试用例属于哪个"Epic"
@allure.epic("用户管理")
class TestUserManagement(object):# 使用@allure.feature装饰器来进一步细分"Epic"下的功能@allure.feature("添加用户")def test_add_user(self):# 添加用户的测试代码assert True, "添加用户功能,断言成功"@allure.feature("删除用户")def test_delete_user(self):# 删除用户的测试代码assert True, "删除用户功能,断言成功"@allure.epic("订单管理")
class TestOrderManagement(object):@allure.feature("创建订单")def test_create_order(self):# 创建订单的测试代码assert True, "创建订单功能,断言成功"@allure.feature("取消订单")def test_cancel_order(self):# 取消订单的测试代码assert True, "取消订单功能,断言成功"

结果如下:

2、@allure.story(*stories)和@allure.Step()

在`pytest`中结合`allure`进行测试报告生成时,`@allure.story(*stories)`注解用于为测试用例指定一个或多个故事(即功能模块或用户故事),以便在报告中更好地组织和分类测试。这能帮助团队理解测试的目的和覆盖的功能范围。

在pytest中使用allure注解可以帮助我们更好地组织和报告测试结果。`@allure.story(*stories)`用于将测试用例归类到不同的故事(或用户故事)中,而`@allure.step()`用于在测试中注明每个小步骤或操作,以增强测试报告的可读性和详细程度。

示例代码:

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import allure
import pytest@allure.epic("用户管理")
@allure.feature("登录功能")
@allure.story("登录成功")
def test_login_success():with allure.step("步骤1: 打开登录页面"):# 假设这里是打开登录页面的操作open_login_page()with allure.step("步骤2: 输入用户名和密码"):# 假设这里是输入用户名和密码的操作input_credentials(username="user", password="password")with allure.step("步骤3: 点击登录按钮"):# 假设这里是点击登录按钮的操作click_login_button()with allure.step("步骤4: 验证登录成功"):# 假设这里是验证登录成功的操作assert login_successful()@allure.epic("用户管理")
@allure.feature("登录功能")
@allure.story("登录失败")
def test_login_failure():with allure.step("输入无效的用户名和密码"):# 假设测试登录失败的逻辑assert login_failed()def open_login_page():passdef input_credentials(username, password):passdef click_login_button():passdef login_successful():# 假设登录成功return Truedef login_failed():# 假设登录失败return False

如图:

3、@allure.title(test_title)和@allure.description(test_description)

在`pytest`中使用`allure`注解组件的`@allure.title(test_title)`和`@allure.description(test_description)`可以帮助我们在生成的测试报告中添加更丰富的信息,让测试的目的和细节更加清晰。

通过`@allure.title`和`@allure.description`注解,你的Allure报告将会包含每个测试用例的标题和详细描述,

源码:

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import pytest
import allure@allure.title("测试登录功能")
@allure.description("""
这个测试用例会测试登录功能,包括如下几点:
1. 输入正确的用户名和密码可以成功登录。
2. 输入错误的密码将不能登录。
""")
def test_login_success():assert True  # 代表登录成功的逻辑@allure.title("测试产品添加功能")
@allure.description("这个测试用例验证是否能成功添加一个新产品到系统中")
def test_add_product():assert True  # 代表添加产品成功的逻辑

如图:

4、@Severity

在pytest中,使用Allure报告可以通过各种注解(装饰器)来丰富测试报告的内容,增加可读性和详细程度。`@allure.severity`是其中一个重要的注解,用于指定测试用例的重要性或严重性等级。Allure框架定义了几个不同的严重性等级,包括`blocker`、`critical`、`normal`、`minor`和`trivial`。

源码:

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import pytest
import allure# 定义测试类
@allure.feature("登录功能")
class TestLogin:# 设置测试的严重性为严重(critical)@allure.severity(allure.severity_level.CRITICAL)@allure.story("登录成功")def test_login_success(self):with allure.step("步骤1:输入正确的用户名和密码"):# 这里模拟输入操作passwith allure.step("步骤2:点击登录按钮"):# 这里模拟点击操作passwith allure.step("步骤3:验证是否登录成功"):# 这里模拟验证操作assert True  # 假设验证成功# 设置测试的严重性为较低(minor)@allure.severity(allure.severity_level.MINOR)@allure.story("忘记密码链接")def test_forget_password_link(self):with allure.step("检查忘记密码链接是否存在"):# 假设检查到链接存在assert True

在这个例子中,定义了一个测试类`TestLogin`,它包含两个测试方法。每个测试方法使用`@allure.severity`装饰器指定了测试用例的重要性等级。 -`test_login_success` 这个测试用例使用了`allure.severity_level.CRITICAL`来标记,意味着这是一个关键的、严重的测试,它的成功运行对项目非常重要。 -`test_forget_password_link` 这个测试用例则被标记为`allure.severity_level.MINOR`,表示它的重要程度较低。 通过这种方式,当生成Allure测试报告时,可以很容易地看到每个测试用例的重要性等级,从而快速识别关键问题所在。

5、@allure.testcase(url, name=None)

在pytest中使用Allure进行测试报告生成时,`@allure.testcase`注解可以为测试用例提供一个链接到测试用例或需求说明的功能,这对于追踪测试的覆盖率和理解测试背景非常有用

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import pytest
import allure# 假设一个外部的测试用例或需求文档URL
TEST_CASE_LINK = "https://www.example.com/your-test-case-or-requirement"@allure.testcase(TEST_CASE_LINK, '测试用例标题或名称')
def test_example_function():"""一个示例测试函数,演示如何使用@allure.testcase注解"""# 假设的测试逻辑assert 1 == 1  # 假设这是一个测试断言

如图:

6、@allure.issue(url, name=None)

在pytest中使用Allure报告生成工具时,可以通过`@allure.issue`注解为测试用例添加关联的问题跟踪链接。这对于将测试结果和问题跟踪系统(如JIRA、GitHub issues等)链接起来非常有用,使得从测试报告中直接定位到问题的具体记录变得可行。

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库import allure
import pytest@allure.issue('https://github.com/issues/1', name='点击此处查看问题详情')
def test_with_issue_link():"""一个带有问题跟踪链接的测试案例"""assert True  # 一个简单的断言@allure.issue('https://github.com/issues/2')
def test_with_issue_link_no_name():"""一个带有问题链接但没有指定名称的测试案例"""assert 1 == 1  # 又一个简单的断言

在这个示例中,`test_with_issue_link`测试函数通过`@allure.issue`被装饰,指定了一个问题跟踪链接及其名称。而`test_with_issue_link_no_name`只指定了问题链接,没有名称。

7、@allure.link(url, link_type='link', name=None)

在Pytest中使用`allure.link()`注解可以帮助我们在测试报告中添加指向外部资源的链接,比如文档或者问题跟踪链接。这样可以方便地从报告中跳转到相关的在线资源。`allure.link()`提供了一种自定义链接的方式

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
# 引入pytest和allure
import pytest
import allure# 使用allure.link注解添加外部链接
@allure.link("https://www.testallure.com", name="TestAllure Link")
def test_with_external_link():"""这个测试包含了一个到外部网站的链接。"""# 模拟一个断言assert True

8、@allure.attach(body, name=None,attachment_type=None,extension=None)

将python对象按照指定的附件类型展示在报告中,可支持的attachment_type(附件类型)在allure.attachment_type

如何使用`@allure.attach()` 在pytest测试中附加数据到Allure报告中。这个例子会进行一个简单的字符串比较测试,并在测试过程中生成一个文本附件添加到Allure报告中。

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import allure
import pytest# 使用装饰器定义一个测试用例
@allure.title("验证字符串附加功能")
def test_string_comparison_with_attachment():a = "Hello"b = "World"# 假如我们想要附上一些额外的信息,比如变量a和b的值allure.attach(a, name="String A", attachment_type=allure.attachment_type.TEXT)allure.attach(b, name="String B", attachment_type=allure.attachment_type.TEXT)# 执行一次简单的断言比较assert a == b, "a 和 b 不相等"

在报告中,你会看到测试用例名下有“Attachments”部分,里面包含了两个附件:“String A”和“String B”,点击它们可以查看具体的内容。

9、@allure.attach.file(source, name=None, attachment_type=None, extension=None)

使用`@allure.attach.file`的示例,这个函数用于将文件作为附件添加到Allure测试报告中

首先在当前目录下创建了一个文本文件`example.txt`,然后通过`allure.attach.file`函数将这个文件添加为测试报告的一部分。函数参数中`name`是附件显示的名称,在Allure报告中会用到;`attachment_type`指定附件的类型(在这个例子中是文本);`extension`指定文件的扩展名。

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入所需的库
import allure
import pytest# 定义测试函数
def test_attach_file():# 假定这里有一些测试逻辑...# 添加一个文件作为附件with open("example.txt", "w") as f:f.write("这是一个附件文件的示例内容")allure.attach.file("example.txt", name="示例附件", attachment_type=allure.attachment_type.TEXT, extension="txt")# 假定测试成功完成assert True

10、@Attachment

在`pytest`中使用`@allure.attachment`装饰器可以帮助我们将测试用例中的一些额外信息(如日志、截图或文件)附加到测试报告中。这对于调试和测试结果分析非常有用。

import allure
import pytest# 定义一个附加文本信息的函数
@allure.attachment('这是附加的文本内容', attachment_type=allure.attachment_type.TEXT)
def attach_text(content):return content# 定义一个截图附加函数(假设是截图,这里只是演示,实际使用时需替换为实际的截图代码)
@allure.attachment('这是附加的截图', attachment_type=allure.attachment_type.PNG)
def attach_screenshot(screenshot):return screenshot# 测试用例
def test_with_attachments():# 附加一些文本attach_text("这是一段示例文本。")# 附加一个“截图”attach_screenshot(b"This is a mock screenshot")  # 实际使用时,请确保这里是图片的byte内容

11、@TmsLink

在pytest中使用@TmsLink注解需要在测试用例中使用@allure.link注解可以将测试用例关联到指定的TMS系统中。

# -*-coding: Utf-8 -*-
# @File : test_allure.py
# author: 石明亮
# Time:2024/3/6
# 导入必需的库
import pytest
import allure@allure.link("http://www.example.com/test_case_001")
def test_case_001():assert 1 == 1@allure.link("http://www.example.com/test_case_002")
def test_case_002():assert 2 == 2@allure.link("http://www.example.com/test_case_003")
@allure.link("http://www.example.com/test_case_004")
def test_case_003():assert 3 == 3

 

 

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

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

相关文章

项目管理工具进度猫:自我管理的应用

在飞速发展的现代社会中,每个人都面临着巨大的竞争压力,如何在这激烈的环境中脱颖而出,实现个人的成长与成功?答案就在我们的日常行为中——自我管理。 一、自我管理的定义 自我管理,简单来说,就是对自己…

Linux-网络-011

1网络协议模型 1.1【OSI】协议模型 1.1.1应用层 实际发送的数据应用层:HTTP 超文本传输协议HTTPS FTP 文件传输协议TFTP 简单文本传输协议SMTP 邮件传输协议MQTT TELNET ..1.1.2表示层 发送的数据是否加密1.1.3会话层 是否建立会话连接1.1.4传输层 数据…

犯难了,99元一年服务器选腾讯云还是阿里云?

腾讯云服务器99元一年是真的吗?真的,只是又降价了,现在只要61元一年,配置为2核2G3M轻量应用服务器,40GB SSD盘,腾讯云百科txybk.com分享腾讯云官方活动购买链接 https://curl.qcloud.com/oRMoSucP 活动打开…

Java精品项目--第6期基于SpringBoot的茶叶商城的设计分析与实现

项目技术栈 SpringBootMavenMySQLJAVAMybatis-PLusVue.js(非前后端分离)Element-UI(非前后端分离)… 表截图 项目截图

UE4 Niagara 关卡1.4官方案例解析

sprites can face the camera,or they can face any arbitrary vector,in this case the vector between the center of the system and the particle itself(粒子可以面对摄影机,也可以面对任意向量,在这个实例中的向…

纯手工搭建一个springboot maven项目

前言&#xff1a;idea社区版无法自动搭建项目&#xff0c;手动搭建的经验分享如下&#xff1a; 1 包结构 参考下图&#xff1a; 2 项目结构 3 maven依赖 具体的项目包结构如下图&#xff1a; 依据这个项目包结构配置一个springboot 的 pom依赖&#xff1a; <?xml ve…

java多线程实现同步的方式介绍

在 Java 多线程编程中&#xff0c;同步是确保多个线程在访问共享资源时的正确性和一致性的重要机制。Java 提供了多种方式来实现线程同步&#xff0c;每种方式都有其特点和适用场景。以下是一些常见的同步方式及其特点和应用场景&#xff0c;以及简单的例子来说明它们的用法。 …

低成本便捷使用最新Claude 3模型的方法!

3 月 4 日&#xff0c;被称为 OpenAI 最强竞争对手的大模型公司 Anthropic 宣布推出 Claude3 系列模型&#xff0c;与 Gemini 类似&#xff0c;模型按照大小分为三个&#xff1a;Claude 3 Haiku、Claude 3 Sonnet 和 Claude 3 Opus。Opus 目前在官方发布的测试成绩中全方位超越…

电脑主机弄丢后赔偿却还收150元费用?

“电脑主机丢失后&#xff0c;我被收取了150元的赔偿费。” 22日&#xff0c;家住临沂市沂水县龙家泉镇的吴女士拨打热线电话反映&#xff0c;家里电脑主机出现问题&#xff0c;她把电脑放在镇上的一家店里。 我去电脑维修店修好了&#xff0c;对方丢了&#xff0c;但他们还是收…

vscode中eslint插件不生效问题

case: 最近使用webpack打包js资源中使用到了VS Code中的eslint插件辅助eslint plugin对代码进行校验&#xff0c;在.eslintrc.js文件中以及webpack.config.js配置好后&#xff0c; 在控制台运行npx webpack可以读取到eslint plugin的检测结果 一、eslint插件读取项目中.eslint…

Nodejs 第五十三章(serverLess)

什么是serverLess? serverLess并不是一个技术&#xff0c;他只是一种架构模型&#xff0c;(无服务器架构)&#xff0c;在传统模式下&#xff0c;我们部署一个服务&#xff0c;需要选择服务器Linux,windows等,并且还要安装环境&#xff0c;熟悉操作系统命令&#xff0c;知晓安…

如何提高LED工程预算的准确性?

LED工程预算的准确性对工程的顺利进行至关重要。预算过高会导致资源浪费&#xff0c;甚至滋生腐败问题&#xff1b;而预算过低则会导致施工进度受阻&#xff0c;影响工程质量和人员工资发放。因此&#xff0c;提高LED工程预算的准确性是工程管理中的重要课题。 以下是一些提高L…

部署YOLOv8模型的实用常见场景

可以的话&#xff0c;GitHub上点个小心心&#xff0c;翻不了墙的xdm&#xff0c;csdn也可以点个赞&#xff0c;谢谢啦 车流量检测&#xff08;开源代码github&#xff09;&#xff1a; test3 meiqisheng/YOLOv8-DeepSORT-Object-Tracking (github.com) 车牌检测&#xff0…

Vue3.2 + vue/cli-service 打包 chunk-vendors.js 文件过大导致页面加载缓慢解决方案

chunk-vendors.js 是/node_modules 目录下的所有模块打包成的包&#xff0c; 但是这包太大导致页面加载很慢&#xff08;我的都要3-4秒了&#xff09;&#xff0c; 这个时候就会出现白屏的情况 解决方案 1、compression-webpack-plugin 插件解决方案 1&#xff09;、安装 npm …

【linux进程信号(二)】信号的保存,处理以及捕捉

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; 进程信号 1. 前言2. 信号阻塞…

新装idea后的常用配置

&#xff08;所有为idea new project配置默认配置的都是 File -> New Projects Settings -> Settings for New Projects&#xff09; 1. 修改编码格式 大多数软件默认编码都是GBK&#xff0c;还有其他的&#xff0c;不过我们都是使用UTF-8的&#xff0c;这里统一设置为…

Python 语句(二)【循环语句】

循环语句允许执行一个语句或语句组多次&#xff0c;其程序流程图如下&#xff1a; 在python中有三种循环方式&#xff1a; while 循环 当判断条件为 true 时执行循环体&#xff0c;否则退出循环体。for 循环 重复执行语句嵌套循环 &#xff08;在while循环体中嵌套for循环&…

Java - Spring MVC 实现跨域资源 CORS 请求

据我所知道的是有三种方式&#xff1a;Tomcat 配置、拦截器设置响应头和使用 Spring MVC 4.2。 设置 Tomcat 这种方式就是引用别人封装好的两个 jar 包&#xff0c;配置一下web.xml就行了。我也并不推荐&#xff0c;这里放两个我在网上找到的配置相关文章&#xff0c;感兴趣可…

Netty架构

Netty逻辑架构 Netty 的逻辑处理架构为典型网络分层架构设计&#xff0c;网络通信层、事件调度层、服务编排层。 一、 网络通信层 网络通信层的职责是执行网络 I/O 的操作。它支持多种网络协议和 I/O 模型的连接操作。当网络数据读取到内核缓冲区后&#xff0c;会触发网络事件…

OSPF NSSA实验简述

OSPF NSSA实验简述 1、OSPF NSSA区域配置 为解决末端区域维护过大LSDB带来的问题&#xff0c;通过配置stub 区域或totally stub区域可以解决&#xff0c;但是他们都不能引入外部路由场景。 No so stuby area &#xff08;区域&#xff09;NSSA 可以引入外部路由&#xff0c;支持…