pytest-yaml-sanmu(六):YAML数据驱动测试

图片

如果说 pytest 中哪些标记使用得最多,那无疑是 parametrize 了,

它为用例实现了参数化测试的能力,进而实现了数据驱动测试的能力。

1. 使用标记

parametrize 的使用需要提高两个内容:

  • 参数名

  • 参数值

pytest 在执行用例时,会分别将参数值,传递给参数名,以此自动生成多个用例。

所以参数化测试的显著结果是:用例执行数量等于参数值的数量。

test_name: 参数化测试mark:  - parametrize:      - n  # 第一个 是参数名      - [1,2,3] # 第二个是参数值steps:  - request:      method: get      url: http://baidu.com

执行结果如下:

图片

图 1.parametrize 标记让用例执行多次

由结果可见,使用了 parametrize 标记的用例一共执行了 3 次,与 parametrize 标记中的参数值的数量是相同的

2. 使用参数

parametrize 中的参数并不仅仅是用来控制数量的,

正如前文所述,pytest 在执行用例时,会分别将参数值传递给参数名。

那么在用例中如何使用参数的?可以使用 ${参数名} 的格式来使用,比如这样

test_name: 参数化测试mark:  - parametrize:      - n      - [1,2,3]steps:  - request:      method: get      url: https://baidu.com?o=${n} # 使用n参数

执行结果如下:

图片

图 2. 在用例中使用 parametrize 标记的参数值

由结果可见,每个用例都得到的 n 是不同的参数值。

3. 加载数据文件

如果参数值较多,yaml 用例文件可能会臃肿,不便于维护。

此时,可将参数值保存在单独数据文件中,并在 yaml 用例中加载该数据文件。

test_name: 从文件中加载数据mark:  - parametrize:      - n      - !include ddt_n.yamlsteps:  - request:      method: get      url: https://baidu.com?o=${n} # 使用n参数

执行结果如下

图片

图 3. 从数据文件中加载参数值

关于 !include 有几点需要注意:

  • 会从当前所在的目录中加载文件文件

  • 也支持相对路径和绝对路径

  • 相对路径是相对于当前 yaml 用例

4. 传递多个参数

在使用参数化时,可以同时传递多个参数,

为了实现这一目标,需要将多个参数放在共一个列表中

test_name: 参数化测试mark:  - parametrize:      - x,y,z # 每次传递3个参数      - [        [1,2,3],        ["a","b","c"],        ["!","?","#"],      ]steps:  - request:      method: get      url: https://baidu.com?o=${x}-${y}-${z}

执行结果如下

图片

图 4. 一个标记传递多个参数

5. 使用多个标记

除了同时传递多个参数之外,也可以使用多个标记

test_name: 参数化测试mark:  - parametrize:      - x      - [1,2,3]  - parametrize:      - y      - ["a","b","c"]  - parametrize:      - z      - ["!","?","#"]steps:  - request:      method: get      url: https://baidu.com?o=${x}-${y}-${z}

执行结果如下

图片

图 5. 多标记会生成更多的用例数量

由结果可知,当使用多个标记时,用例数量不再是参数值的数量,而是所有标记参数的笛卡儿积

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【面试八股总结】线程基本概念,线程、进程和协程区别,线程实现

一、什么是线程? 线程是“轻量级进程”,是进程中的⼀个实体,是程序执⾏的最小单元,也是被系统独立调度和分配的基本单位。 线程是进程当中的⼀条执行流程,同⼀个进程内多个线程之间可以共享代码段、数据段、打开的文件…

MySQL手注之布尔型盲注详解

布尔型盲注简介 基于布尔型SQL盲注即在SQL注入过程中,应用程序仅仅返回True(页面)和False(页面)。 这时,我们无法根据应用程序的返回页面得到我们需要的数据库信息。但是可以通过构造逻辑判断(…

同星智能正式推出CAN总线一致性测试系统

CAN总线一致性测试系统 CAN FD/CAN总线一致性测试系统,在硬件系统上基于同星自主研发的总线分析工具,干扰仪,一致性测试机箱,并搭配程控电源,示波器,数字万用表等标准外围仪器设备;在软件上基于…

算力狂飙|WAIC 2024上的服务器

7月7日,2024世界人工智能大会暨人工智能全球治理高级别会议(WAIC 2024)在上海落下帷幕。这场备受瞩目的AI盛宴与热辣夏日碰撞,吸引了全球科技、产业及学术界的广泛关注,线下参观人数突破30万人次,线上流量突…

【排序算法】快速排序(详解+各版本实现)

目录 一.交换排序 1.基本思想 2.冒泡排序 二.快速排序 1.hoare版本 2.挖坑法 3.前后指针版本 4.优化 优化①:三数取中 优化②:小区间优化 5.非递归版本 6.特性总结 ①效率 ②时间复杂度:O(N*logN) ③空间复杂度:O(l…

【vue】JSON数据导出excel

前言 导出方式有很多种,但是若只需要数据导出成.xlsx文件并下载的话,只用xlsx一个插件就行 目标 1 实现数据导出excel 2 如何设置表格列宽 3 如何在文件中创建工作表 准备工作 1 安装 npm i xlsx -S 2 引入 npm i xlsx -S 二、导出excel 创建文件 con…

【IMU】 温度零偏标定

温度标定 IMU的零偏随着温度的变化而变化,在全温范围内形状各异,有些可能是单调的,有些可能出现拐点。 多项式误差温度标定 目的是对估计的参数进行温度补偿,获取不同温度时的参数值(零偏、尺度、正交)&…

C++笔试强训3

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、选择题1-5题6-10题 二、编程题题目一题目二 一、选择题 1-5题 如图所示,如图所示p-3指向的元素是6,printf里面的是%s,从6开…

LLM应用构建前的非结构化数据处理(一)标准化处理认识数据

1.学习内容 本节次学习内容来自于吴恩达老师的Preprocessing Unstructured Data for LLM Applications课程,因涉及到非结构化数据的相关处理,遂做学习整理。 2.相关环境准备 2.1 建议python版本在3.9版本以上 chromadb0.4.22 langchain0.1.5 langcha…

【电脑应用技巧】如何寻找电脑应用的安装包华为电脑、平板和手机资源交换

电脑的初学者可能会直接用【百度】搜索电脑应用程序的安装包,但是这样找到的电脑应用程序安装包经常会被加入木马或者强制捆绑一些不需要的应用装入电脑。 今天告诉大家一个得到干净电脑应用程序安装包的方法,就是用【联想的应用商店】。联想电脑我是一点…

数字化转型:企业法务管理的未来发展 ​​​

在数字化浪潮的推动下,企业法务管理正经历着前所未有的变革。传统的法务工作模式在数据处理、合同审查、风险评估等方面逐渐显得力不从心。面对这一挑战,企业法务管理的数字化转型成为提升效率、保障合规、优化法律服务的必然选择。 数字化转型涉及到法…

【Java算法】二分查找 下

🔥个人主页: 中草药 🔥专栏:【算法工作坊】算法实战揭秘 一.山脉数组的峰顶索引 题目链接:852.山脉数组的峰顶 ​ 算法原理 这段代码实现了一个查找山峰数组中峰值索引的算法。山峰数组是一个先递增后递减的数组&…

前端图表库G2快速上手

文档地址&#xff1a; https://g2-v3.antv.vision/zh/docs/manual/getting-started/ https://g2.antv.antgroup.com/ 安装&#xff1a; pnpm i antv/g2在vue3中使用&#xff1a; <script setup> import {Chart} from antv/g2; import {onMounted} from "vue"…

智慧运维管理平台建设方案(PPT原件)

1、智慧运维系统建设背景 2、智慧运维系统建设目标 3、智慧运维系统建设内容 4、智慧运维系统建设技术 5、智慧运维系统建设流程 6、智慧运维系统建设收益 软件全套资料获取及学习&#xff1a;本文末个人名片直接获取或者进主页。

咱迈出了模仿的第一大步!快进来看看~

微信公众号&#xff1a;牛奶Yoka的小屋 有任何问题。欢迎来撩~ 最近更新&#xff1a;2024/06/28 [大家好&#xff0c;我是牛奶。] 这是第一篇模仿文章。咱决定先模仿样式&#xff0c;从外至里&#xff0c;层层递进。于是找了几个大V的公众号&#xff0c;看来看去&#xff0c;发…

uniapp 微信小程序接入MQTT

MQTT安装 前期准备 由于微信小程序需要wss&#xff0c;所以要有域名SSL证书 新建目录/srv/mosquitto/config&#xff0c;/srv/mosquitto/config/cert 目录/srv/mosquitto/config中新建配置文件mosquitto.conf&#xff0c;文件内容 persistence true persistence_location /m…

Hospital Management Startup 1.0 SQL 注入漏洞(CVE-2022-23366)

前言 CVE-2022-23366是一个影响HMS v1.0的SQL注入漏洞。该漏洞存在于patientlogin.php文件中&#xff0c;允许攻击者通过特定的SQL注入来获取或修改数据库中的敏感信息。 具体来说&#xff0c;攻击者可以通过向patientlogin.php发送恶意构造的SQL语句来绕过身份验证&#xff…

基于 sftp 的 NAS (局域网文件存储服务器)

局域网 NAS (文件存储服务器) 的基本功能有: 能够存储文件, 同时能够通过多个设备访问 (上传/下载) 文件. 这些功能通过 sftp 可以实现. sftp 是基于 SSH 的文件传输协议, SSH 全程加密传输, 使用 公钥 认证 (不使用密码/口令), 能够提供很高的安全性. 上文说到, 在 LVM 和 bt…

大数据------JavaWeb------FilterListenerAJAXAxiosJSON

Filter Filter简介 定义&#xff1a;Filter表示过滤器&#xff0c;是JavaWeb三大组件&#xff08;Servlet、Filter、Listener&#xff09;之一。 作用&#xff1a;它可把对资源&#xff08;Servlet、JSP、Html&#xff09;的请求拦截下来从而实现一些特殊功能 过滤器一般完成…

绝区陆--大语言模型的幻觉问题是如何推动科学创新

介绍 大型语言模型 (LLM)&#xff08;例如 GPT-4、LLaMA-2、PaLM-2、Claude-2 等&#xff09;已展示出为各种应用生成类似人类文本的出色能力。然而&#xff0c;LLM 的一个鲜为人知的方面是它们倾向于“产生幻觉”或生成不正确或没有根据的事实陈述。我不认为这仅仅是一个限制…