Python 自动化测试(三): pytest 参数化测试用例构建

news2024/11/20 6:17:50


在之前的文章中主要分享了 pytest 的实用特性,接下来讲 Pytest 参数化用例的构建。
如果待测试的输入与输出是一组数据,可以把测试数据组织起来用不同的测试数据调用相同的测试方法。参数化顾名思义就是把不同的参数,写到一个集合里,然后程序会自动取值运行用例,直到集合为空便结束。pytest 中可以使用 @pytest.mark.parametrize 来参数化。
parametrize( ) 方法源码:

  • 主要参数说明
  • argsnames :参数名,是个字符串,如中间用逗号分隔则表示为多个参数名
  • argsvalues :参数值,参数组成的列表,列表中有几个元素,就会生成几条用例
  • 使用方法
  • 使用 @pytest.mark.paramtrize() 装饰测试方法
  • parametrize(‘data’, param) 中的 “data” 是自定义的参数名,param 是引入的参数列表
  • 将自定义的参数名 data 作为参数传给测试用例 test_func
  • 然后就可以在测试用例内部使用 data 的参数了
    创建测试用例,传入三组参数,每组两个元素,判断每组参数里面表达式和值是否相等,代码如下:
    运行结果:
    整个执行过程中,pytest 将参数列表 [(“3+5”,8),(“2+5”,7),("75",30)] 中的三组数据取出来,每组数据生成一条测试用例,并且将每组数据中的两个元素分别赋值到方法中,作为测试方法的参数由测试用例使用。
    同一个测试用例还可以同时添加多个 @pytest.mark.parametrize 装饰器, 多个 parametrize 的所有元素互相组合(类似笛卡儿乘积),生成大量测试用例。
    场景:比如登录场景,用户名输入情况有 n 种,密码的输入情况有 m 种,希望验证用户名和密码,就会涉及到 n
    m 种组合的测试用例,如果把这些数据一一的列出来,工作量也是非常大的。pytest 提供了一种参数化的方式,将多组测试数据自动组合,生成大量的测试用例。示例代码如下:
    运行结果:
    分析如上运行结果,测试方法 test_foo( ) 添加了两个 @pytest.mark.parametrize() 装饰器,两个装饰器分别提供两个参数值的列表,2 * 3 = 6 种结合,pytest 便会生成 6 条测试用例。在测试中通常使用这种方法是所有变量、所有取值的完全组合,可以实现全面的测试。
    下面讲结合 @pytest.fixture 与 @pytest.mark.parametrize 实现参数化。
    如果测试数据需要在 fixture 方法中使用,同时也需要在测试用例中使用,可以在使用 parametrize 的时候添加一个参数 indirect=True,pytest 可以实现将参数传入到 fixture 方法中,也可以在当前的测试用例中使用。
    parametrize 源码:
    indirect 参数设置为 True,pytest 会把 argnames 当作函数去执行,将 argvalues 作为参数传入到 argnames 这个函数里。创建“test_param.py”文件,代码如下:
    运行结果:
    上面的结果可以看出,当 indirect=True 时,会将 login_r 作为参数,test_user_data 被当作参数传入到 login_r 方法中,生成多条测试用例。通过 return 将结果返回,当调用 login_r 可以获取到 login_r 这个方法的返回数据。
     

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

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

相关文章

Mentor-dft 学习笔记 day46-Graybox OverviewTessent On-Chip Clock Controller(1)

graybox功能简化了分层设计中的扫描插入和ATPG处理过程,允许对子模块执行扫描和ATPG操作,然后允许在以下情况下使用该子模块的简化灰箱表示在下一个更高层次执行扫描和ATPG操作。由于子模块的灰盒表示仅包含最小数量的互连电路,因此在大型分层…

Oracle-在线重定义dbms_redefinition.sync_interim_table增量同步引发TX行锁问题

前言: 近期处理了一起用户使用在线重定义dbms_redefinition增量同步操作引发TX行锁的问题,用户在使用dbms_redefinition.sync_interim_table进行数据增量同步时,在线重定义的原表SQL语句出现了TX行锁等待问题 后面经过分析,发现产生TX行锁问…

短链接业务解决方案(附源码项目)

开源地址 https://github.com/lcy19930619/short-link 一个单节点短链接项目,有需要的拿去改改就行了,如果方便,可以帮忙点点star 什么是短链接 蓝色部分就是短链接 为什么要用短链接? 因为短信是按照字符去计算条数的&#x…

12月21日 OpenCV 实战基础学习笔记——背景建模、光流估计

文章目录前言一、背景建模1、帧差法2、混合高斯模型二、光流估计前言 本文为12月21日 OpenCV 实战基础学习笔记,分为两个章节: 背景建模;光流估计。 一、背景建模 1、帧差法 由于场景中的目标在运动,目标的影像在不同图像帧中…

Redis哨兵机制以及发布订阅

Redis哨兵机制1 哨兵Sentinel机制2 哨兵架构原理3 搭建哨兵架构4 通过springboot操作哨兵Redis发布订阅1 哨兵Sentinel机制 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例组成的Sentinel 系统可以监视任意多个主服务…

海格里斯HEGERLS深度解析|重型四向穿梭车的轨道换向组件及轨道系统

随着自动化仓储物流系统的广泛应用,物流设备也更趋于多样化,比如在货架轨道上可四向行走的穿梭车应运而生,重型四向穿梭车作为一种新型的物流存储设备,通常在轨道平面上有行走方向相互垂直的两个行走系统,通过两个行走…

gRPC学习Go版(一)

文章目录微服务入门gRPC是什么proto 服务定义gRPC 优势gRPC入门简单使用一元RPC服务流RPC客户流RPC双工流RPCgRPC底层原理RPC流长度前缀的消息分帧请求消息响应信息通信模式下的消息流微服务入门 现在的软件很少是一个孤立的单体应用运行的,相反更多是通过互联网连接…

玩以太坊链上项目的必备技能(错误处理以及异常-Solidity之旅十四)

错误处理 作为开发者的我们知道,我们所编写出来的程序难免会出现 bug ,而要做的是捕获异常,给用户抛出一个友好地错误提示。 而在 Solidity 中,根据状态恢复异常来处理错误,该异常将撤销在当前调用中对状态所做的所有…

[思维模式-9]:《如何系统思考》-5- 认识篇 - 改变开环、组合逻辑的线性思考,实施闭环、时序逻辑的动态思考。

目录 第1章 因果关系 1.1 因果关系 1.2 因果关系的特点 1.3 因果关系的类型 第2章 线性思考遇到的问题:开环思维、组合逻辑 2.1 开环系统 2.2 组合逻辑 2.3 线性关系 2.4 什么是线性思维:线性因果关系 2.5 线性思维的数学本质 2.6 线性思维的…

自动化药房出药升降机选型设计

一、 运动规划、运动参数的确定 1、 运动参数计算 运动参数主要通过速度规划确定,速度规划采用直线速度特性,如图所示。 运动方程为: 2、 X方向的速度和加速度的估算 已知参数: X方向行程:1…

stream_component_open函数分析

stream_component_open() 函数主要作用是打开 音频流或者视频流 对应的解码器,开启解码线程去解码。 流程图如下: stream_component_open() 的函数定义如下: /* open a given stream. Return 0 if OK */ static int stream_component_open(…

K8S知识点及dashboard操作

1.什么是K8S? K8S是一组服务器集群,可以在集群的各个节点上运行特定的容器。 K8S所管理的是:集群节点上的容器 特性: 自我修复,弹性伸缩(根据实时服务器的并打情况,增加或收缩容器数量&…

网络编程套接字Socket(通过两个用例,逐行注释,详细理解)干活满满建议收藏

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言1.分类1.流套接字2.数据报套接字3.原始套接字2.Socket通信模型 3.UDP套接字编程1. DatagramSocket API1.构造方法1.DatagramSocket()2.DatagramSocket(int port)…

C语言之复合类型上卷(十八)(阴阳两极)

上一篇: C语言之内存管理(十七)(转世灵童现世) 逐梦编程,让中华屹立世界之巅。 简单的事情重复做,重复的事情用心做,用心的事情坚持做; 文章目录前言一、什么是结构体?二、结构体的定义及初始化…

USB TO SPI(上海同旺电子)调试器调试MCP3201 A/D 转换器

所需设备: 1、USB TO SPI(上海同旺电子); 2、MCP3201 12 位A/D 转换器; 特性 • 12 位分辨率 • 1 LSB DNL (最大值) • 1 LSB INL (最大值)(MCP3201-B) • 2 LSB INL &#xff…

pdf文件太大怎么变小,如何压缩pdf大小

pdf文件太大怎么变小?如果你是Windows电脑,可以使用PDF编辑器来减小PDF文件的大小,比如这款出色的PDF压缩工具-易我PDF编辑器,它的“压缩”功能提供了两种减小文件大小的方法,这使得它既适合那些只想获得更小的PDF的人…

【vscode】c++程序的自动编译及调试(环境centos)

目录1.新增配置文件(1)c_cpp_properties.json(2)files.associations(3)tasks.json(4)CMakeLists.txt2.断点调试1.新增配置文件 VS Code的配置文件一般是指特定目录下的JSON文件。所谓JSON是一种文本格式&a…

LCF-ATEPC(2020 Elsevier)面向中文的方面级提取和分类

论文题目(Title):A Multi-task Learning Model for Chinese-oriented Aspect Polarity Classification and Aspect Term Extraction (面向中文的方面极性分类和方面项提取的多任务学习模型) 研究问题(Question&#…

适用于 Windows 10/11 电脑 的 5 大好用的离线录屏软件

屏幕录制应用程序可以数字记录出现在任何设备或 PC 屏幕上的内容,并同时以高清流式传输音频和视频。 因此,他们帮助创建营销视频、跟踪客户行为、设计产品演示、监控员工活动、录制教育内容、网络研讨会内容和业务会议内容。 现在您已经意识到屏幕录…

VS系列多通道振弦传感器无线采发仪的数据发送说明

每次设备启动后会将采集到的传感器数据进行内部存储,并在设置好的时间间隔将数据发送出去,通过修改“数据发送方式”参数,监测数据可由数据接口输出也可经由无线网络发送。在发送监测数据时,可通过修改“数据包协议”参数来设置所…