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

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"目录和直接展示的用例,以此类推

相关文章:

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

pytest常用插件 pytest-html插件 安装: pip install pytest-html -U 用途: 生成html的测试报告 用法: ​在.ini配置文件里面添加 addopts --htmlreport.html --self-contained-html 效果: 执行结果中存在html测试报告路…...

神经网络的权重是什么?

请参考这个视频https://www.bilibili.com/video/BV18P4y1j7uH/?spm_id_from333.788&vd_source1a3cc412e515de9bdf104d2101ecc26a左边是拟合的函数,右边是均方和误差,也就是把左边的拟合函数隐射到了右边,右边是真实值与预测值之间的均方…...

C语言代码 在屏幕上输出9*9乘法口诀表

在屏幕上输出9*9乘法口诀表。 代码示例&#xff1a; #include <stdio.h>int main() {int i 0;for (i 1; i < 9; i)//打印所有行的循环{int j 0;for (j 1; j < i; j)//打印每一行中所有列的循环{printf("%d*%d%-2d ", i, j, i * j);//%-2d的意思是两…...

11.0 Zookeeper watcher 事件机制原理剖析

zookeeper 的 watcher 机制&#xff0c;可以分为四个过程&#xff1a; 客户端注册 watcher。服务端处理 watcher。服务端触发 watcher 事件。客户端回调 watcher。 其中客户端注册 watcher 有三种方式&#xff0c;调用客户端 API 可以分别通过 getData、exists、getChildren …...

HGAME 2024 WEEK 1 :web ezHTTP

题目&#xff1a; 看到这个就知道是文件头伪造 第一想法就是Referer伪造 所以伪造 Referer: vidar.club 然后构造伪造的Referer 然后提示通过那些东西访问页面&#xff0c;User-Agent: 是构造你浏览器访问信息的&#xff0c;所以复制右边那一串替代就好了 然后要求我们从本地…...

Linux【docker 设置阿里源】

文章目录 一、查看本地docker的镜像配置二、配置阿里镜像三、检查配置 一、查看本地docker的镜像配置 docker info一般没有配置过是不会出现Registry字段的 二、配置阿里镜像 直接执行下面代码即可&#xff0c;安装1.10.0以上版本的Docker客户端都会有/etc/docker 1.建立配置…...

app逆向-frida-rpc详解

Frida-RPC是Frida工具的一个组件&#xff0c;用于在应用程序和Frida脚本之间进行远程过程调用&#xff08;RPC&#xff09;。远程过程调用是一种允许应用程序的不同部分或不同的应用程序之间进行通信的方法。在Frida中&#xff0c;RPC通过JavaScript脚本和应用程序之间建立通信…...

计算机网络(第六版)复习提纲27

7 TCP流量控制 A 利用滑动窗口实现流量控制 所谓流量控制&#xff0c;就是让发送方发送速率不要太快&#xff0c;让接收方来得及接收 1 利用窗口进行流量控制 2 持续计时器和零窗口探测报文&#xff08;仅携带一字节的数据&#xff09; B TCP的传输效率&#xff08;TCP报文段的…...

解析与模拟常用字符串函数strcpy,strcat,strcmp,strstr(一)

今天也是去学习了一波字符串函数&#xff0c;想着也为了加深记忆&#xff0c;所以写一下这篇博客。既帮助了我也帮助了想学习字符串函数的各位。下面就开始今天的字符串函数的学习吧。 目录 strcpy与strncpy strcat与strncat strcmpy strstr strcpy与strncpy 在 C 语言中&…...

node.js后端+小程序前端+mongoDB(增删改查)

前言 今天我对比了以下node.js的express与python的fastAPI&#xff0c;我决定我还是出一期关于node.jsmangoDB小程序的小案例吧。 不是python的fastAPI不好用&#xff0c;因为fastAPI是python较新的技术&#xff0c;我不敢果断发出教学文章&#xff08;这件事情还是留着给pyt…...

thinkphp数据批量提交(群发消息)

<form id="edit-form" class="form-horizontal" role="form" data-toggle<...

大华 DSS 数字监控系统 attachment_getAttList.action SQL 注入漏洞复现

0x01 产品简介 大华 DSS 数字监控系统是大华开发的一款安防视频监控系统,拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。 0x02 漏洞概述 大华 DSS存在SQL注入漏洞,攻击者 /portal/attachment_getAttList.action 路由发送特殊构造的数据包,利用报错注入获…...

vue2学习笔记(2/2)

vue2学习笔记&#xff08;1/2&#xff09; vue2学习笔记&#xff08;2/2&#xff09; 文章目录 1. 初始化脚手架2. 分析脚手架&render函数文件结构图示及说明main.jsindex.htmlApp.vueSchool.vueStudent.vue 关于不同版本的Vue修改默认配置vue.config.js配置文件 3. ref属…...

uniapp 之 base64转临时地址播放mp3

需求是&#xff1a;进入页面的时候是先有背景音乐&#xff0c;发送问题请求回答的时候会返回文字和音频&#xff0c;前端要把音频读出来&#xff0c;并且把背景音乐停止&#xff0c;读完音频后再打开背景音乐 一开始用的直接base64直接拼接在地址后 真机放不了 const innerAu…...

【网站项目】038汽车养护管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…...

倒计时64天

B-小红的因子数_牛客周赛 Round 31 (nowcoder.com) 超时了&#xff08;108.33/125&#xff09; #include <bits/stdc.h> using namespace std; const int N 1e5 5; const int inf 0x3f3f3f3f; #define int long long void solve() {int x;cin>>x;if(x1){cout&…...

003集—三调数据库添加三大类字段——arcgis

在国土管理日常统计工作中经常需要用到三大类数据&#xff08;农用地、建设用地、未利用地&#xff09;&#xff0c;而三调数据库中无三大类字段&#xff0c;因此需要手工录入三大类字段&#xff0c;并根据二级地类代码录入相关三大类名称。本代码可一键录入海量三大类名称统计…...

python基础使用之excel数据处理

当我们需要用python处理 Excel 表格数据时&#xff0c;Python 提供了一个强大的库pandas。pandas 是一个用于数据分析的开源 Python 库&#xff0c;它可以帮助我们轻松地读取、操作和分析 Excel 表格数据。下面通过一个实例&#xff0c;展示 pandas如何 来处理 Excel 表格数据的…...

【算法】【数据结构】算法与数据结构的关系

程序算法数据结构语言工具和环境 但在算法学习过程中&#xff0c;我认识到算法和数据结构是密不可分的&#xff0c;脱离数据结构谈论算法是空架子。 算法&#xff1a;解决问题的步骤和方法。对数据进行操作和处理的方法。 数据结构&#xff1a;用来存储数据的方式。 数据结构和…...

Libvirt 迁移标志详解

可参考&#xff1a;https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainMigrateFlags 在虚拟化环境中&#xff0c;迁移是一项重要的功能&#xff0c;Libvirt 提供了一系列标志&#xff0c;用于控制迁移过程中的不同行为。以下是 virDomainMigrateFlags 枚举的详细…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...