pytest的常用插件和Allure测试报告

pytest常用插件

pytest-html插件

安装:

pip install pytest-html -U

用途:

生成html的测试报告

用法:

​在.ini配置文件里面添加

addopts = --html=report.html --self-contained-html

效果:

执行结果中存在html测试报告路径

pytest-xdist插件

安装:

pip install pytest-xdist -U

用途:

可以使用并发的方式执行用例

用法:

在.ini配置文件中添加

addopte -n 并发数(建议不要超过系统CPU的核心数)
如果并发数为0,相当于没有使用插件

效果:

会减少用例的执行时间,但是由于调用进程也需要消耗资源,所以填写的并发数太多时间并不会得到有效的提升

无并发执行情况:

并发数为2的执行情况:

可以看到效率有所提高

pytest-rerunfailures插件

安装:

pip install pytest-rerunfailures -U

用途:

在用例失败后进行重试,可以执行重试最大次数和每次重试之前的等待时间

用法:

在.ini配置文件中添加

addopts --reruns 重新执行的数量 --reruns-delay 每次重新执行的等待时间
如: --reruns 5 --reruns-delay 1   表示如果失败最多重新执行5次,并且每次重新执行之间间隔一秒

效果:

用例内容:

生成一个随机数范围是[1, 3)

断言这个随机数是否等于1,相当于是50%的概率

def test_1():a = random.randint(1, 3)assert a == 1

使用--reruns 5 --reruns-delay 1的配置执行后

pytest-order插件

安装:

pip install pytest-order -U

用途:

给用例排序,让用例可以按照执行的顺序执行

用法:

在用例上面加上如下标识

@pytest.mark.order(1)

执行时会按照数字从小到大的顺序执行,如果没有填数字或者没有添加标识的用例,会在排序的所有用例执行之后,按照原本的用例顺序执行。

效果:

用例内容:

test_1没有添加标识

test_2添加了标识但没有加入数字

test_3、test_4、test_5添加了标识并且加入了数字

def test_1():print('执行用例test_1')@pytest.mark.order()
def test_2():print('执行用例test_2')@pytest.mark.order(1)
def test_3():print('执行用例test_3')@pytest.mark.order(3)
def test_4():print('执行用例test_4')@pytest.mark.order(2)
def test_5():print('执行用例test_5')

预期执行顺序:

test_3、test_5、test_4、test_1、test_2

执行结果:

符合预期

pytest-base-url插件

安装:

pip install pytest-base-url -U

用途:

在用例中可以使用名为base-url的变量,可以在用例之间传递信息

用法:

在.ini配置文件中添加:

addopts  --base-url 内容
或者
base_url = 内容

效果:

用例内容:

打印base-url的内容

def test_abc(base_url):print('正在使用的环境是:', base_url)

base-url的内容为:

base_url = 测试环境

效果:

pytest-result-log插件

安装:

pip install pytest-result-log -U

用途:

打印的日志更详细,并且会对不同用例的日志进行区分

用法:

安装之后即可用

配置格式:

log_file = ./pytest.log
log_file_level = info
log_file_format = %(levelname)-8s %(asctime)s [%(name)s:%(lineno)s] : %(message)s
log_file_date_format = %Y-%m-%d %H:%M:%S# 设置打印日志的级别
result_log_level_verbose = info

效果:

用例内容:

import logginglogger = logging.getLogger()def test_log1():logger.info("哈哈哈,我是日志内容")def test_log2():logger.info("哈哈哈,我也是日志内容")assert 1 == 2

执行结果:

会生成一个.log的文件,文件名为配置中设置的名称

log_file = ./pytest.log

Allure测试报告框架

环境需要

需要安装Allure和jdk11及以上版本(建议17)

并且需要将其加入到系统的环境变量

最终结果就是:在cmd窗口或者终端中输入java和allure都可以出现对应的内容

allure-pytest插件

安装:

pip install allure-pytest -U

用途:

将pytest生成的测试报告转化为Allure可以识别的数据

用法:

在.ini配置文件中添加:

addopts  --alluredir=./temps --clean-alluredir

Allure测试报告框架的用法

当生成了pytest的测试报告之后,在终端输入:

allure generate -c -o report temps

其中generate表示生成报告

-c表示清空之前的报告

-o表示报告存放的目录名字(后面的report是我设置的目录名字)

temps表示allure-pytest插件生成的测试结果存放的位置(名字可以自己更换)

可以通过在main.py文件中添加如下代码,用来在用例执行完之后,自动执行该命令

os.system('allure generate -c -o report temps')

效果:

点击你存放allure报告的目录(我的是report),找到index.html用浏览器打开

 

其中测试套会根据用来存在的目录进行区分

Allure测试报告定制

在Allure目录下找到config/allure.yml

修改成如下内容(就是把 - custom-logo-plugin 那一行加进去):

plugins:- junit-xml-plugin- xunit-xml-plugin- trx-plugin- behaviors-plugin- packages-plugin- screen-diff-plugin- xctest-plugin- jira-plugin- xray-plugin- custom-logo-plugin

然后在来到Allure的plugins\custom-logo-plugin\static路径下

找到图片文件和css文件

设计好对应的logo图片和css样式,加进去Allure报告的logo就会修改了

Allure报告中对用例分类

我们可以在用例加上allure标记

同类型的标记中内容相同的标记会被归为一类

# 对测试用例进行划分,级别从大到小
@allure.epic()
@allure.feature()
@allure.story()
@allure.title()

举例:

@allure.epic('项目标记1')
@allure.feature('模块标记1')
class Test1:@allure.story('场景1')@allure.title('功能1')def test_1(self):print('执行了test_1')@allure.story('场景1')@allure.title('功能2')def test_2(self):print('执行了test_2')@allure.title('功能2')def test_3(self):print('执行了test_3')@allure.epic('项目标记1')
@allure.feature('模块标记2')
class Test2:@allure.title('功能1')def test_1(self):print('执行了test_1')@allure.title('功能1')def test_2(self):print('执行了test_2')@allure.story('场景1')@allure.title('功能2')def test_3(self):print('执行了test_3')

Test1类和Test2类都加上了epic('项目标记1')此时他们会在报告会打包到一个名为"项目标记1"的目录下

又因为他们各自有带有不同的feature()标记,所以在"项目标记1"目录下Test1类和Test2类中的用例会再被分为两个目录:"模块标记1"和"模块标记2"

Test1类中用例又被分为"场景1"目录和直接展示的用例,以此类推

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

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

相关文章

GPT3.5\GPT4系列计算完整prompt token数的官方方法

前言: ChatGPT如何计算token数?https://wtl4it.blog.csdn.net/article/details/135116493?spm1001.2014.3001.5502https://wtl4it.blog.csdn.net/article/details/135116493?spm1001.2014.3001.5502 GPT3.5\GPT4系列计算完整prompt token数的官方方法&#xff1…

Xmind 2023 下载安装教程,保姆级教程,小白也能轻松搞定,附安装包

前言 XMind 是一款非常实用的思维导图软件,应用全球最先进的Eclipse RCP 软件架构,全力打造易用、高效的可视化思维软件,强调软件的可扩展、跨平台、稳定性和性能,致力于使用先进的软件技术帮助。 准备工作 1、Win7 及以上系统…

在VM虚拟机搭建NFS服务器

NFS共享要求如下: (1)共享“/mnt/自已姓名的完整汉语拼音”目录,允许XXX网段的计算机访问该共享目录,可进行读写操作。(说明:XXX网段,请根据你的规划,再具体指定&#xf…

C++初阶 内存管理和模板

目录 一、new 1.1什么是new? 1.2为什么要有new? 1.3使用new 1.4 new的超级好处 二、delete 2.1什么是delete? 2.2为什么要有delete? 2.3使用delete 三、 malloc / free和new / delete的共同点和区别 四、浅谈模板 4.1什…

【计网·湖科大·思科】实验七 路由信息协议RIP、开放最短路径优先协议OSPF、边界网关协议BGP

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

2024年第四届工业自动化、机器人与控制工程国际会议 | Ei、Scopus双检索

会议简介 Brief Introduction 2024年第四届工业自动化、机器人与控制工程国际会议(IARCE 2024) 会议时间:2024年7月5 -7日 召开地点:中国成都 大会官网:www.iarce.org 2024年第四届工业自动化、机器人与控制工程国际会…

ffmpeg 时间裁剪之-ss -t与滤镜中trim=start=*:duration=*的区别和联系

背景 工作中遇到的呗。记下来贡着。 滤镜重置时间戳:setptsPTS-STARTPTS 在FFmpeg中,setptsPTS-STARTPTS是一种用于调整视频时间戳(PTS)的滤镜表达式。这个表达式通常用于视频编辑和处理过程中,用于修改视频的时间轴…

正点原子--STM32定时器学习笔记(2)

书接上文,本篇是对基本定时器实验部分进行的总结~ 实验目标:通过TIM6基本定时器定时500ms,让LED0每隔500ms闪烁。 解决思路:使用定时器6,实现500ms产生一次定时器更新中断,在中断里执行“翻转LED0”。 定时…

排序(6)——冒泡排序、计数排序

七、冒泡排序 1.简介 冒泡排序可以说是我们的老朋友了,是一种很简单的排序方法。冒泡就是泡泡在水中向上漂,很形象的名字和贴合它的思路,通过一趟趟的冒泡每一次将最大的元素冒到最后的位置处,这样就完成了数据的排序。 2.思路与…

基于YOLOv8的船舶目标检测系统(Python源码+Pyqt6界面+数据集)

博主简介 AI小怪兽,YOLO骨灰级玩家,1)YOLOv5、v7、v8优化创新,轻松涨点和模型轻量化;2)目标检测、语义分割、OCR、分类等技术孵化,赋能智能制造,工业项目落地经验丰富; …

项目02《游戏-04-开发》Unity3D

基于 项目02《游戏-03-开发》Unity3D , 因前三集资源以及代码冗余问题,本次项目对前三集进行了重做,资源及代码如下, 首先导入场景及人物资源, 为人物添加动画控制器Animator组件, 创建动画控…

人工智能基础-matplotlib基础

绘制图形 import numpy as np x np.linspace(0, 10, 100) y np.sin(x) import matplotlib as mpl import matplotlib.pyplot as plt plt.plot(x, y) plt.show()绘制多条曲线 siny y.copy() cosy np.cos(x) plt.plot(x, siny) plt.plot(x, cosy) plt.show()设置线条颜色 …

Jasperreport 生成 PDF之省纸模式

省纸模式顾名思义就是节省纸张,使用 Jasper 去生成 PDF 的时候如果进行分组打印的时候,一页 A4 纸只会打印一组数据。这种情况下,如果每组数据特别少,只有几行,一页 A4 纸张根本用不了,就会另起一页继续打印…

【傻瓜式教程】docker运行facechain

首选,为了防止后期docker满,Docker容器 - 启动报错:No space left on device,更换一下docker存储位置 1、停止Docker服务 首先停止Docker守护进程,可以使用以下命令: sudo systemctl stop docker 备份现有…

旧衣物回收小程序开发,互联网模式下的营收有多大?

在当下快节奏的生活中,人们不仅生活水平在提高,消费水平也在逐渐提高,从而导致了闲置衣物的增加。为了减少浪费,旧衣服回收行业受到了大众的广泛关注,成为循环利用的一大方式。 当然,在当下网络时代&#…

时间复杂度为 O(n) 的排序算法

大家好,我是 方圆。本文介绍线性排序,即时间复杂度为 O(n) 的排序算法,包括桶排序,计数排序和基数排序,它们都不是基于比较的排序算法,大家重点关注一下这些算法的适用场景。 桶排序 桶排序是分治策略的一…

kingbase控制文件重建

背景: 测试版本:V008R006C005B0023 sys_control文件在数据目录的global下 若sys_control文件损坏或被删,会导致库无法启动 处理方式: 所在目录为数据目录 1、尝试dryrun touch global/sys_control sys_resetwal -l 00000001…

Jenkins任意文件读取漏洞(CVE-2024-23897)复现

Jenkins 有一个内置的命令行界面CLI,在处理 CLI 命令时Jenkins 使用args4j 库解析 Jenkins 控制器上的命令参数和选项。此命令解析器具有一个功能,可以将参数中后跟文件路径的字符替换为文件内容 ( expandAtFiles)。具有Overall/Read权限的攻击者可以读取…

PeakCAN连接到WSL2 Debian

操作步骤 按照以下步骤进行操作: 在Windows下安装PeakCAN驱动并安装,地址是https://www.peak-system.com/PCAN-USB.199.0.html?&L1 在Windows下安装usbipd,地址是https://github.com/dorssel/usbipd-win/releases,最新版是…

小米服务治理——客户端熔断器(Google SRE客户端熔断器)

目录 前言 一、什么是Google SRE熔断器 二、Google SRE 熔断器的工作流程: 三、客户端熔断器 (google SRE 熔断器) golang GRPC 实现 四、客户端熔断器 (google SRE 熔断器) golang GRPC单元测试 大家可以关注个人博客:xingxing – Web Developer …