Python Pytest装饰器@pytest.mark.parametrize详解

2023-10-26

转自:Python Pytest装饰器@pytest.mark.parametrize详解

Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT
如:@pytest.mark.parametrize('请求方式,接口地址,传参,预期结果',[('get','www.baidu.com','{"page":1}','{"code":0,"msg":"成功"})',('post','www.baidu.com','{"page":2}','{"code":0,"msg":"成功"}')])

1、第一个参数是字符串,多个参数中间用逗号隔开

2、第二个参数是list,多组数据用元祖类型;传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应
3、传一个参数 @pytest.mark.parametrize('参数名',list) 进行参数化
4、传两个参数@pytest.mark.parametrize('参数名1,参数名2',[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])]) 进行参数化

  1 import pytest
  2 #单参数单值
  3 @pytest.mark.parametrize("user",["18221124104"])
  4 def test(user):
  5     print(user)
  6     assert user=="18221124104"
  7  
  8  
  9 "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py
 10 ============================= test session starts =============================
 11 platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
 12 rootdir: C:\Users\wangli\PycharmProjects\Test\test
 13 collected 1 item
 14  
 15 test03.py 18221124104
 16 .
 17  
 18 ============================== 1 passed in 0.15s ==============================
 19  
 20 Process finished with exit code 0
 21  
 22  
 23  
 24 #单参数多值
 25 @pytest.mark.parametrize("user",["18221124104","18200000000","18200000001"])
 26 def test(user):
 27     print(user)
 28     assert user=="18221124104"
 29  
 30  
 31 "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py
 32 ============================= test session starts =============================
 33 platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
 34 rootdir: C:\Users\wangli\PycharmProjects\Test\test
 35 collected 3 items
 36  
 37 test03.py 18221124104
 38 .18200000000
 39 F18200000001
 40 F
 41  
 42 ================================== FAILURES ===================================
 43 ______________________________ test[18200000000] ______________________________
 44  
 45 user = '18200000000'
 46  
 47     @pytest.mark.parametrize("user",["18221124104","18200000000","18200000001"])
 48     def test(user):
 49         print(user)
 50 >       assert user=="18221124104"
 51 E       AssertionError
 52  
 53 test03.py:74: AssertionError
 54 ______________________________ test[18200000001] ______________________________
 55  
 56 user = '18200000001'
 57  
 58     @pytest.mark.parametrize("user",["18221124104","18200000000","18200000001"])
 59     def test(user):
 60         print(user)
 61 >       assert user=="18221124104"
 62 E       AssertionError
 63  
 64 test03.py:74: AssertionError
 65 ========================= 2 failed, 1 passed in 0.21s =========================
 66  
 67 Process finished with exit code 0
 68  
 69  
 70  
 71 #多参数多值
 72 @pytest.mark.parametrize("user,pwd",[("18221124104",111111),("18200000000",111111)])
 73 def test(user,pwd):
 74     print(user,pwd)
 75  
 76  
 77 "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py
 78 ============================= test session starts =============================
 79 platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
 80 rootdir: C:\Users\wangli\PycharmProjects\Test\test
 81 collected 2 items
 82  
 83 test03.py 18221124104 111111
 84 .18200000000 111111
 85 .
 86  
 87 ============================== 2 passed in 0.03s ==============================
 88  
 89 Process finished with exit code 0
 90  
 91  
 92  
 93 # 使用内置的mark.xfail标记为失败的用例就不运行了,直接跳过显示xfailed
 94 @pytest.mark.parametrize("user,pwd",[("18221124104",111111),pytest.param("18200000000",111111,marks=pytest.mark.xfail)])
 95 def test(user,pwd):
 96     print(user,pwd)
 97     assert user == "18221124104"
 98     assert pwd== 111111
 99  
100  
101  
102 "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py
103 ============================= test session starts =============================
104 platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
105 rootdir: C:\Users\wangli\PycharmProjects\Test\test
106 collected 2 items
107  
108 test03.py 18221124104 111111
109 .18200000000 111111
110 x
111  
112 ======================== 1 passed, 1 xfailed in 0.14s =========================
113  
114 Process finished with exit code 0
115  
116  
117  
118  
119 #若要获得多个参数化参数的所有组合,可以堆叠参数化装饰器
120 @pytest.mark.parametrize("x", [0, 1])
121 @pytest.mark.parametrize("y", [2, 3])
122 def test_foo(x, y):
123     print("测试数据组合:x->%s, y->%s" % (x, y))
124  
125 if __name__=="__main__":
126     pytest.main(["-s","test03.py"])
127  
128  
129 "C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test03.py
130 ============================= test session starts =============================
131 platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
132 rootdir: C:\Users\wangli\PycharmProjects\Test\test
133 collected 4 items
134  
135 test03.py 测试数据组合:x->0, y->2
136 .测试数据组合:x->1, y->2
137 .测试数据组合:x->0, y->3
138 .测试数据组合:x->1, y->3
139 .
140  
141 ============================== 4 passed in 0.03s ==============================
142  
143 Process finished with exit code 0
144 
145 #json传参
146 user = [
147     {
148         "aa": 'aa1',
149         "bb": 'bb1'
150     },
151     {
152         "aa": 'aa2',
153         "bb": 'bb2'
154     }
155 ]
156 @pytest.mark.parametrize("user", user)
157 def test(user):
158     print("aa: %s, bb: %s" % (user['aa'], user['bb']))
159 
160 ===================== test session starts =====================
161 platform darwin -- Python 3.9.2, pytest-6.2.2, py-1.10.0, pluggy-0.13.1
162 rootdir: /Users/admin/PythonProject/audit_auto_test/audit_web_i18n_test
163 collected 2 items                                                                                                                                                                                                                                      
164 
165 tests/test_pytest.py .. 
166 ====================== 2 passed in 0.01s ======================

————————————————
版权声明:本文为CSDN博主「王大力测试进阶之路」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36502272/article/details/100986069

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Pytest装饰器@pytest.mark.parametrize详解 的相关文章

  • 100天精通Python(数据分析篇)——第72天:Pandas文本数据处理方法之判断类型、去除空白字符、拆分和连接

    文章目录 每篇前言 一 Python字符串内置方法 1 判断类型 2 去除空白字符 3 拆分和连接 二 Pandas判断类型 1 str isspace 2 str isalnum 3 str isalpha 4 str isdecimal
  • mysql存储过程和存储函数

    一 存储过程概述 1 mysql存储过程和存储函数是将复杂sql集合在一起 应用程序只需调用即可 不必关注mysql存储过程和存储函数sql逻辑 存储过程预先经过编译的一组sql 存储在 MySQL 服务器上 需要执行的时候 客户端只需要向
  • go 递归tree关系_统一的树可视化形式描述语法 – GoTree

    树可视化是可视化领域长期以来的研究热点 近40年来 研究者利用不同的视觉映射方式发展了超过300种树可视化形式 https treevis net 并且广泛应用在日常生活中 例如展示电脑文件目录结构的缩进列表 反映股市中公司市值以及股价升降
  • 【Linux】网络基础(二)

    TCP UDP协议 UDP 协议通信程序的编写 套接字相关接口介绍 字节序相关接口 IP 地址转换接口 TCP 协议通信程序的编写 套接字接口介绍 多进程实现多执行流 多线程实现多执行流 UDP 协议通信程序的编写 UDP 协议 无连接 不
  • THWATCH-01 陀螺仪 MPU6050 HAL库 正点原子 STM32驱动 计步

    THWATCH 01 陀螺仪 MPU6050 HAL库 正点原子 STM32驱动 计步 一级目录 二级目录 三级目录 一 cubemx配置 1 使用cubemx配置串口 2 配置IIC1 3 配置时钟和SWDIO下载口 二 修改KEIL工程
  • js冒泡排序两种方法(for循环、数组内置对象sort方法)

    一 利用for循环的嵌套来实现冒泡排序 冒泡排序 升序降序在于if条件中大于号和小于号 升序 var brr 8 68 6 88 86 666 99 98 var pemp 注意对循环体for的理解 自己顺一遍效果最佳 for var i
  • libuv初学者学习笔记

    开始阅读前 我简单的理解觉得是 类似于leetcode的一种题 外部同时启动开始 但是内部严格的按照线程1 gt 线程2的顺序发生过程 libuv框架 从上往下看 从左往右分成网络IO与文件IO等操作 网络I O看 linux平台通过底层e
  • js逆向之加密参数还原与模拟

    js逆向之加密参数还原与模拟 加密参数还原的逻辑很简单 找到代码中加密参数的生成过程 然后模拟出相同的方法 很多时候会卡到加密参数定位上 然后遇到混淆加密过的复杂Js 导致还原的过程无比艰辛 准备了由易到难的逆向案例 带大家体验精彩的逆向过
  • 【unity笔记】图解 Vector3.SignedAngle()方法的返回值

    这个方法可以理解为 两个向量之间的夹角 有符号的 我会将它想象成 将两个向量都放在坐标原点 一个向量要向哪个方向旋转多少度 才能与另一个向量重合 于是我在坐标原点放置了两个向量 OB和OA OB始终躺在X轴正方向 看看OA在4个象限的不同的
  • Pytorch——在一个Tensor中随机保留一个True,其他全为False

    需求 让一个 false false false false true true 的tensor 变成随机只保留一个true的tensor 且可以并行处理 要将一个布尔类型的张量 False False False False True T
  • 在vue中 echarts 饼图 legend 取消点击事件

    取消点击事件两种方法 legend selectedMode false 取消图例上的点击事件 myChart off legendselectchanged myChart on legendselectchanged function
  • 数学建模

    1 神经网络模型的基本概念是什么 神经网络模型模拟生物神经网络 通过大量互联节点来学习复杂的数据模式和关系 2 神经网络模型的主要优点是什么 可以自动学习时间序列数据的复杂非线性模式 不需要预先指定模型形式 具有很强的适应性和灵活性 3 神
  • WPF绘制图形

    利用WPF绘制简单图形 就像Winform那样 参考DrawToolsWPF using System using System Collections Generic using System Linq using System Text
  • 浏览器 hard refresh

    浏览器 hard referesh force refresh 不同于普通的按 F5 键刷新页面 它会先清当前页面的 cache 然后再刷新页面 这比手工找在浏览器设置中清当前站点的 cache 要方便的多 方法 Windows Ctrl
  • 【Java项目】多文件传输:文件分割与传输

    所谓的文件分割 并非真的将文件切割多个块存储发送 实质上是 用尺子和笔给整个文件块做上分割标记 那么发送时 文件的随机读写 可根据这些标记小块发送 接收端 也可以根据分割信息进行清点与组装 发送端与接收端只要约定好发送与接收 即传输协议 就
  • 算法可视化

    软件功能 以数组为例 一个数组是一个容器 对其进行可视化 主要针对数组的值查找 指定位置插入 指定位置删除进行可视化 软件针对每个数据结构可视化分两个方面 教学模式 主要针对数据结构每个方面进行讲解 可动画演示 实践模式 允许使用者自己通过
  • 汇编语言(王爽第三版)实验三

    实验三 题目预览 将下面的程序保存为t1 asm文件 将其生成可执行t1 exe 用Debug跟踪t1 exe的执行过程 写出每一步执行后 相关寄存器中的内容和栈顶的内容 PSP的头两个字节是CD20 用Debug加载t1 exe 查看PS
  • python3编码格式_python3编码方式

    ascii A 00000001 8位 1个字节 unicode A 00000000 00000000 00000000 00000001 32位 4个字节 utf 8 A 0000 0010 8位 1个字节 中文 00000000 00
  • 数据挖掘:认识数据

    越来越多的人认识到 数据对这个世界的影响越来越大 掌握数据就掌握了发言权 如何从数据中找到想要的知识 是得到数据之后最需要关心的 数据挖掘 也是知识发现的过程 1 理解数据 现实世界中 各行各业每时每刻都在产生数量庞大的数据集 让人眼花缭乱
  • 怎样才能跳过实名认证_和平精英qq怎么跳过实名认证!老司机告诉你仅需5步

    qq怎么跳过实名认证玩家是否知晓 虽然来说跳过实名认证对于手游来说并没有什么帮助 但是这个方式方法玩家还是需要知道的 这样能够帮助玩家轻松的做到某些事情 而这里就是样式玩家如何进行和平精英实名认证怎么跳过 其实在老司机手机仅需5步即可 和平

随机推荐

  • gtx1660是什么级别的_显卡天梯图秒懂GTX1660Ti性能 GTX1660Ti相当于什么显卡

    GTX1660Ti是NVIDIA二月份刚发布的一款显卡 从命名上看 它是历代英伟达显卡中 最 6 的显卡 名称中包含了3个6字 作为上一代甜品级GTX1060的继任者 而颇受关注 那么GTX1660Ti相当于什么显卡 其大致性能是什么水平呢
  • 色值的封装方法以及RGB和RGBA的区别

    取色值相关的方法 define RGB r g b UIColor colorWithRed r 255 f green g 255 f blue b 255 f alpha 1 f define RGBA r g b a UIColor
  • 项目搭建之代码规范化解决方案

    代码规范化解决方案Eslint Prettier Eslint 是一个插件化的 javascript 代码检测工具 用于代码格式检测 不符合Eslint规则的代码 会被检测到发出警告 报错 通过 eslintrc js 文件可以进行自定义的
  • 约瑟夫环:循环链表,数组

    约瑟夫环 1 循环链表 设计思路 2 顺序表 数组实现 设计思路 站成一圈 从1报数 报数为m则出列 求出列序列 1 循环链表 设计思路 用循环链表实现逻辑结构 mermaid svg Ejge7i4yvNzv6PZ2 label font
  • Python opencv学习-5创建带调色板的画板

    test5 带调色板的画板 可改变线的粗细 颜色 缺点 其实是不断画圆 鼠标动作快了能看出执行间隔 import cv2 import numpy as np drawing False mouse callback function de
  • MATLAB回归分析--------2019/8/2

    回归分析 多元线性回归 Matlab 统计工具箱用命令 regress 实现多元线性回归 用的方法是最小二乘法 用 法是 b r e g r e
  • linux中摄像头旋转90度,ok335xD 如何将屏幕显示转90度在linux下,竖屏变横屏。

    我在内核里发现这样几个文件 不知是否能用的到 在drivers video 下 Kconfig and 8 15 or 16 bpp color 90 degrees clockwise display rotation for xilin
  • linux 日志查看

    Linux 查看日志相关命令总结 Linux日志筛选命令 常用Linux日志查看命令 grep常用用法 zgrep 不解压过滤压缩包中文本 Linux命令大全 手册 循环实时查看最后50行记录 tailf n 50 tomcat stdou
  • 在论坛中出现的比较难的sql问题:21(递归问题 检索某个节点下所有叶子节点)...

    最近 在论坛中 遇到了不少比较难的sql问题 虽然自己都能解决 但发现过几天后 就记不起来了 也忘记解决的方法了 所以 觉得有必要记录下来 这样以后再次碰到这类问题 也能从中获取解答的思路 问题 求SQL 检索某个节点下所有叶子节点 部门表
  • centos7配置yum为国内源

    问题 yum install libXm so 4 报错 Cannot find a valid baseurl for repo base 7 x86 64 因为yum源不是国内的 切换一下 步骤 卸载 yum rpm aq grep y
  • 字节青训营第十三课之深入浅出RPC框架的笔记与总结.md

    基本概念 本地函数调用 函数调用完整过程如图 藏实际上编译器经常优化 参数和返回值少时直接将其存在寄存器 不需操作栈 直接online不需call 将a和b的值入栈 经函数指针找到calculate 进入函数取栈中值2和3赋给x和y 计算x
  • C# GDI+ 绘图

    1 坐标系统 1 坐标原点 在窗体或控件的左上角 坐标为 0 0 2 正方向 X轴正方向为水平向右 Y轴正方向为竖直向下 3 单位 在设置时 一般以像素为单位 像素 Pixel 是由图像 Picture 和元素 Element 组成 是用来
  • 怎么在百度里通过关键词搜索到自己的网站

    1 需要在百度站长平台提交自己的网址 2进入百度站长平台 点击链接提交 3 点击添加站点 等待百度收录之后 4 在百度搜索框中输入 如下图 site后面的是你的域名 然后空格 加你要搜索的关键词 在该域名上的网页上要有该关键字 5 输入关键
  • git bash 命令行反应慢、卡顿

    1 在Windows11的电脑上安装了git 后 鼠标右键打开git bash here 打开窗口缓慢 输入命令也慢的要死 如果安装git的时候选择在桌面创建图标 通过桌面图标打开也是一样的 2 最简单的ls 命令 都要停顿半秒 3 点击桌
  • Flops 计算以及代码快速查看网络参数、浮点数

    详细计算 卷积神经网络CNN中的参数量 parameters 和计算量 FLOPs 知乎 FLOPS 全大写 指每秒浮点运算次数 可以理解为计算的速度 是衡量硬件性能的一个指标 硬件 FLOPs s小写 指浮点运算数 理解为计算量 可以用来
  • Lattice CrosslinkNx LIFCL-40应用连载5:如何使用MIPI D-PHY硬核IP

    作者 Hello Panda 一 目标 配置CMOS Sensor OV9734 并通过MIPI DPHY硬核接收数据 使用一个RISC V软核 实通过AHB总线访问I2C FIFO 通过I2C总线配置OV9734 Sensor 使用MIP
  • 基于VS调试分析 + 堆栈观察问题代码段

    文章目录 问题代码段1 阶乘之和 问题代码段2 越界的危害 发现问题 分析问题 思考问题 堆栈原理 解决问题 DeBug与Release 程序员与测试人员 总结与提炼 问题代码段1 阶乘之和 先来看一道C语言中比较基础的题目 求解阶乘的和
  • java --向上转型和向下转型

    一 简述 Java 转型主要是用在继承和接口实现的场景 Java 转型可分为向上转型和向下转型 区别如下 向上转型 通过子类对象实例化父类对象 这属于自动转换 向下转型 通过父类对象实例化子类对象 这属于强制转换 只要记住一句话即可 父类引
  • JAVA 多态 从内存角度分析

    设父类对象占内存空间100M 子类对象占内存空间50M 问题 对象转型问题 为什么只有父类变量指向子类对象 因为父类需要100M 只能指向比自己更大的空间 父类变量指向子类对象时变量情况 a pa c cc 父类变量实际上指向的是 和 pc
  • Python Pytest装饰器@pytest.mark.parametrize详解

    转自 Python Pytest装饰器 pytest mark parametrize详解 Pytest中装饰器 pytest mark parametrize 参数名 list 可以实现测试用例参数化 类似DDT 如 pytest mar