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. 多标记会生成更多的用例数量

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

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

eBPF 指令宏

linux 6.9.7 指令宏 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ /* eBPF instruction mini library */ #ifndef __BPF_INSN_H #define __BPF_INSN_Hstruct bpf_insn;/* ALU ops on registers, bpf_add|sub|...: dst_reg src_reg */ // BPF_ALU64_REG&am…

Drools开源业务规则引擎(三)- 事件模型(Event Model)

文章目录 Drools开源业务规则引擎(三)- 事件模型(Event Model)1.org.kie.api.event2.RuleRuntimeEventManager3.RuleRuntimeEventListener接口说明示例规则文件规则执行日志输出 4.AgentaEventListener接口说明示例监听器实现类My…

Linux——学习Linux基本工具安装教程视频链接

本篇文章就是记录一下学习Linux需要用到的基本工具的视频教程链接,方便以后查看 VMware15.5安装 安装视频教程:VMware15.5安装教程 centos7.6安装(这个视频教程真的很nice) 视频教程:centos7.6 虚拟机克隆、快照、…

医疗器械FDA | FDA如何对医疗器械网络安全认证进行审查?

FDA医械网络安全文件出具​https://link.zhihu.com/?targethttps%3A//www.wanyun.cn/Support%3Fshare%3D24315_ea8a0e47-b38d-4cd6-8ed1-9e7711a8ad5e FDA对医疗器械的网络安全认证进行审查时,主要关注以下几个方面,以确保医疗器械在网络环境中的安全性…

7 系列 FPGA 引脚及封装(参考ug475)

目录 I/O BankPins引脚定义I/O and Multi-Function PinsPower Supply PinsDedicated XADC PinsTransceiver PinsDedicated Configuration PinsTemperature Sensor Pins Device 视图整个 FPGAIOBILOGIC,OLOGIC,IDELAY,ODELAYBUFIO,BUFR,IDELAYCTRLBUFMRCEBRAM,DSPIBUFDS_GTE2CLB…

vscode远程连接linux(配置免密)

远程连接 1.首先保证物理机和虚拟机网络可以ping通 2.查看ubuntu得ip地址 ifconfig IP为:192.168.52.133 3.连接远程主机 配置免密 1.打开cmd运行ssh-keygen -t rsa 一路回车就行 2.打开window文件夹C:\Users\xbj\.ssh 3.用记事本打开id_rsa.pub文件复制公…

[数据集][目标检测]护目镜检测数据集VOC+YOLO格式888张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):888 标注数量(xml文件个数):888 标注数量(txt文件个数):888 标注类别…

美光科技在2024年1γ工艺技术在10纳米级别启动EUV试产

美光科技(Micron)在2024年针对其1γ(1-gamma)工艺技术在10纳米级别启动EUV(极紫外光刻)试产,这标志着存储行业巨头在EUV采用上的重要一步,尽管相比英特尔和台积电等其他半导体制造商…

Linux--USB驱动开发(一)USB简介

一、什么是 USB? USB 全称为 Universal Serial Bus ,翻译过来就是通用串行总线。由英特尔与众多电脑公司提出来,用于规范电脑与外部设备的连接与通讯。目前 USB 接口已经得到了大范围的应用,已经是电脑、手机等终端设备的必配…

Android面试题自定义View之Window、ViewRootImpl和View的三大流程

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 View的三大流程指的是measure(测量)、layout(布局)、draw(绘制)。 下面我们来分别看看这三大流程 View的measure(测量) MeasureSpec Measur…

【Axure高保真原型】中继器表格——移入显示详情卡片案例

今天和大家分享中继器表格——移入显示详情卡片的原型模板,鼠标移入员工号或姓名会弹出员工卡片,可以查看更详细的信息。这个表格是用中继器制作的,所以使用也很方便,只需要维护中继器表格里的信息,即可自动生成交互效…

计算机网络--网络层

一、网络层的服务和功能 网络层主要为应用层提供端对端的数据传输服务 网络层接受运输层的报文段,添加自己的首部,形成网络层分组。分组是网络层的传输单元。网络层分组在各个站点的网络层之间传输,最终到达接收方的网络层。接收方网络层将运…

基于单片机的防酒驾控制系统设计

摘 要: 酒后驾车的危害十分巨大,因此,笔者介绍了一种基于单片机的防酒驾控制系统。系统由酒精传感器 MQ-3测量汽车驾驶员体内的酒精含量浓度,通过 A/D 转换器转换成数字信号传给单片机,经过单片机处理后显示酒精浓度&a…

2 极/2 零 (2P2Z) 补偿器

极/2 零 (2P2Z) 补偿器是模拟 II 型控制器的数字实现。它是一种滤波器,通过考虑两个极点和一个零点,将特定的增益和相位升压引入系统。您必须战略性地选择每个极点和零点的频率位置,这将有助于实现所需的系统性能。在该…

简单的手动实现spring中的自动装配案例

简简单单的实现一个spring中的自动装配和容器管理的小骚操作。 1,创建AutoSetBean.java 使用injectBeans静态方法,可以扫描指定包下的所有带MyInject注解的字段,如果在beans的Map中存在这个字段的实例化类,则执行装配。 import…

解决C++编译时的产生的skipping incompatible xxx 错误

问题 我在编译项目时,产生了一个 /usr/bin/ld: skipping incompatible ../../xxx/ when searching for -lxxx 的编译错误,如下图所示: 解决方法 由图中的错误可知,在编译时,是能够在我们指定目录下的 *.so 动态库的…

干冰运输与存储中的温度监测:确保药品安全与合规性

在制药行业,干冰对于运输和储存对温度敏感的药品,如原料药API、疫苗、冻干物质和人体组织样本等至关重要。虹科ELPRO LIBERO系列干冰温度记录仪,能够为您提供专业的解决方案,定期监测和记录干冰运输和存储过程中的温度&#xff0c…

通信软件开发之业务知识:PON口割接什么意思?

一 PON口割接(原创总结) 在通信领域,PON口割接指的是对无源光网络(Passive Optical Network,PON)端口进行的切换或调整操作。简单来说,就是对光纤网络中的某个端口进行重新连接或重新分配&…

2-25 基于matlab的语音信号降噪处理算法

基于matlab的语音信号降噪处理算法,采用谱减法,可以对强噪声背景下的语音信号进行去噪。输入原始信号及加噪信号,对加噪信号进行降噪,并提高信噪比。程序已调通,可直接运行。 2-25 语音信号降噪处理算法 谱减法 - 小红…

Vue3基础(二)

一、搭建工程(vite) ## 1.创建命令 npm create vuelatest## 2.具体配置 ## 配置项目名称 √ Project name: vue3_test ## 是否添加TypeScript支持 √ Add TypeScript? Yes ## 是否添加JSX支持 √ Add JSX Support? No ## 是否添加路由环境 √ Add Vue Router for Single P…