当前位置: 首页 > news >正文

pytest+allure

安装

下载:github win环境下载zip

环境变量:

pycharm:

        pip install allure-pytest

验证安装

生成结果:


if __name__ == '__main__':pytest.main(['-s','test_createTag2.py','--alluredir','result'])

生成报告:

allure generate ./result  -c -o ./report

完整: 

if __name__ == '__main__':pytest.main(['-s','test_createTag2.py','--alluredir','./result'])os.system('allure generate ./result -c -o ./report')

添加装饰器/方法后才能在报告中显示相关结果

12、用法(二)之生成测试报告_哔哩哔哩_bilibili

使用装饰器

  1. @allure.feature@allure.story: 这些装饰器用于描述测试的功能和具体的故事或场景。

    1import allure
    2
    3@allure.feature('User Management')
    4@allure.story('Login')
    5def test_valid_login():
    6    # 测试代码
  2. @allure.severity: 设置测试案例的严重性等级。

    1@allure.severity(allure.severity_level.CRITICAL)
    2def test_critical_function():
    3    # 测试代码
  3. @allure.issue@allure.tms_link: 链接到问题跟踪系统中的问题或测试管理系统中的测试用例。

    1@allure.issue('PROJECT-123')
    2@allure.tms_link('TC-1234')
    3def test_linked_case():
    4    # 测试代码

在测试函数内使用allure方法

  1. allure.attach(): 添加文本、图片、HTML或任何类型的附件到测试报告。

    1def test_attach():
    2    allure.attach('This is a text attachment', attachment_type=allure.attachment_type.TEXT)
    3    # 测试代码
  2. allure.step(): 创建可折叠的步骤,使测试报告更清晰。

    1def test_with_steps():
    2    with allure.step('Step 1'):
    3        # 执行步骤1
    4    with allure.step('Step 2'):
    5        # 执行步骤2

Environment设置

  • Environment可以理解为环境变量;

  • 默认为空;

  • 可以自己设置。

   

创建environment.xml

<environment><parameter><key>Browser</key><value>Chrome</value></parameter><parameter><key>Browser.Version</key><value>111.0.5563.65</value></parameter><parameter><key>Env</key><value>Test</value></parameter><parameter><key>IP</key><value>192.168.1.133</value></parameter><parameter><key>Allure-Pytest.Version</key><value>2.8.12</value></parameter></environment>

  

Categories设置

1.Categories即分类,

测试用例结果的分类

默认有两种分类:

# Product defects 产品缺陷(测试结果:failed)

# Test defects 测试缺陷(测试结果:error/broken)

可以自定义分类。

2. 设置方式

创建categories.json文件

[{"name": "Passed tests","matchedStatuses": ["passed"]},{"name": "Ignored tests","matchedStatuses": ["skipped"]},{"name": "Infrastructure problems","matchedStatuses": ["broken", "failed"],"messageRegex": ".*bye-bye.*"},{"name": "Outdated tests","matchedStatuses": ["broken"],"traceRegex": ".*FileNotFoundException.*"},{"name": "Product defects","matchedStatuses": ["failed"]},{"name": "Test defects","matchedStatuses": ["broken"]}]

  参数说明:

  • name:分类名称
  • matchedStatuses:测试用例的运行状态,默认["failed", "broken", "passed", "skipped", "unknown"]
  • messageRegex:测试用例运行的错误信息,默认.* ,通过正则匹配
  • traceRegex:测试用例运行的错误堆栈信息,默认.* ,通过正则匹配

  

@pytest.mark.parametrize()

Allure能够很好的支持@pytest.mark.parametrize()进行参数化

  

with allure.step

@allure.step()标记函数使之成为测试步骤,而在测试函数/方法中,我们还可以通过with allure.step()的方式标记测试步骤。

它们之间的区别在于,@allure.step()用于标记通用函数,当这个被标记的函数被调用后,会插入步骤说明并展示在Allure报告中。

而with allure.step()则是将普通的代码标记为测试步骤,执行到这段代码时则会在Allure报告中展示步骤说明。

我们在上面代码的基础上,加入with allure.step(),示例如下:

import pytest
import allure
import osclass Counter:def __init__(self):self.value = 0def increment(self):self.value += 1@allure.step("get value")def get_value(self):return self.value@pytest.fixture
def counter(request):#request 参数不需要传值#setupwith allure.step("with.allure.step"):c = Counter()print("setup_value:",c.value)def reset_counter():#还原数据c.value = 0print("teardown_value:",c.value)request.addfinalizer(reset_counter)return cdef test_counter(counter):print('test-start')assert counter.get_value() == 0counter.increment()assert counter.get_value() == 1counter.increment()assert counter.get_value() == 2if __name__ == '__main__':pytest.main(['-s','test_yield_finalizer.py','--alluredir','./result'])os.system('allure generate ./result -c -o ./report')

fixture

pytest的fixture函数可以实现setup、teardown的功能,而Allure会跟踪每个fixture的调用情况,详细显示调用了哪些fixture和参数以及调用顺序。

  

@pytest.mark.skip(reason='这个是跳过的原因!')

@pytest.mark.skipif(condition, reason='跳过的原因!')

@pytest.skip()在用例内部跳过测试用例

@pytest.mark.xfail(condition, reason=‘理由!’)

tags

其他:

https://blog.csdn.net/2301_81967703/article/details/138576981

allure.attach


allure.attach用于在测试报告中添加附件,补充测试结果。附件格式可以是txt、jpg等,附件内容通常是测试数据、截图等。

allure.attach提供了两种方法:allure.attach(),allure.attach.file()

allure.attach()
作用:在测试报告中生成指定内容、名称、类型的附件

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

参数说明:

body,需要显示的内容,也可以理解为写入附件的内容
name,附件名称
attachment_type,附件类型,如csv、jpg、html 等,由allure.attachment_type提供
extension:附件扩展名,不常用
allure.attach.file()
作用:向测试用例中上传附件

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

参数说明:source为文件路径,其他参数与allure.attach()参数一致。

在UI自动化测试中,会经常用到这个方法来上传用例执行的截图。
 

Note:

关于Flaky test 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《Java初阶数据结构》----4.<线性表---Stack栈和Queue队列>
  • vue上传Excel文件并直接点击文件列表进行预览
  • 学习笔记10:bos、cos和对象存储 的区别
  • yarn的安装与配置
  • 身份证如何查验真伪?C#身份证二要素、三要素接口集成
  • BACnet物联网关BL103:Modbus协议转BACnet/MSTP
  • 2024秋招算法
  • py Qt5学习记录
  • LINUX客户端client(socket、connect,write)实现客户端发送,服务器接收
  • Docker 镜像 pull 失败(Docker 镜像停止服务解决方法)
  • 第124天:内网安全-代理 Sockets协议路由不出网后渗透通讯CS-MSF 控制上线
  • 无人机之在农业上的用途
  • Java毕业设计-基于SSM框架的少儿编程网上报名系统项目实战(附源码+论文)
  • tensorboard add_text() 停止自动为尖括号标记添加配对的结束括号</>
  • 基于 HTML+ECharts 实现的数据可视化大屏案例(含源码)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • es6--symbol
  • java正则表式的使用
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • MySQL用户中的%到底包不包括localhost?
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • 关于List、List?、ListObject的区别
  • 关于字符编码你应该知道的事情
  • 看域名解析域名安全对SEO的影响
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 软件开发学习的5大技巧,你知道吗?
  • 使用agvtool更改app version/build
  • 数据科学 第 3 章 11 字符串处理
  • 小程序 setData 学问多
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 在Unity中实现一个简单的消息管理器
  • PostgreSQL之连接数修改
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (02)Unity使用在线AI大模型(调用Python)
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (4.10~4.16)
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (libusb) usb口自动刷新
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (zhuan) 一些RL的文献(及笔记)
  • (分类)KNN算法- 参数调优
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转) Android中ViewStub组件使用
  • (转)h264中avc和flv数据的解析
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转载)深入super,看Python如何解决钻石继承难题
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • ****三次握手和四次挥手
  • ***检测工具之RKHunter AIDE
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .bat文件调用java类的main方法
  • .NET 8.0 发布到 IIS
  • .Net Remoting(分离服务程序实现) - Part.3