Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT

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])]) 进行参数化,当装饰给方法时,这时方法被被执行2次,第1次:参数名1 对应值 参数1_data[0],参数名2 对应值 参数2_data[0]

第2次:参数名1 对应值 参数1_data[1],参数名2 对应值 参数2_data[1],这样就可以用到我们测试用例执行中,根据用例的多少,调用多次,断言多次,不需要用循环去写了。

我们试着尝试list里面嵌套字符串、列表、元祖、字典时是如何处理的,请看下面脚本执行情况

import pytestclass Test(object):#列表#====参数为列表====@pytest.mark.parametrize('a',[1])def test01(self,a):print(type(a),a)@pytest.mark.parametrize('b',[1,2]) #test02被调用2次def test02(self,b):print(type(b),b)#列表套元祖#====参数为列表嵌套元祖====@pytest.mark.parametrize('c',[(3,4)])def test03(self,c):print(type(c),c)@pytest.mark.parametrize('d,e',[(5,6)])def test04(self,d,e):print(type(d),type(e),d,e)@pytest.mark.parametrize('f',[(7,8),(9,10)])#test05被调用2次def test05(self,f):print(type(f),f)@pytest.mark.parametrize('g,h',[(11,12),(13,14)])#test06被调用2次def test06(self,g,h):print(type(g),type(h),g,h)#列表套字典#====参数为列表嵌套字典====@pytest.mark.parametrize('i',[{15,16}])def test07(self,i):print(type(i),i)@pytest.mark.parametrize('j,k',[{17,18}])def test08(self,j,k):print(type(j),type(k),j,k)@pytest.mark.parametrize('l',[{19,20},{21,22}])#test14被调用2次def test09(self,l):print(type(l),l)@pytest.mark.parametrize('m,n',[{23,24},{25,26}])#test14被调用2次def test10(self,m,n):print(type(m),type(n),m,n)# 列表套列表#====参数为列表嵌套列表====@pytest.mark.parametrize('o',[[27,28]])def test011(self,o):print(type(o),o)@pytest.mark.parametrize('p,q',[[29,30]])def test12(self,p,q):print(type(p),type(q),p,q)@pytest.mark.parametrize('r',[[31,32],[33,34]])#test14被调用2次def test13(self,r):print(type(r),r)@pytest.mark.parametrize('s,t',[[35,36],[37,38]])#test14被调用2次def test14(self,s,t):print(type(s),type(s),s,t)
if __name__=="__main__":pytest.main(["-s","test02.py"])"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test02.py
============================= test session starts =============================
platform win32 -- Python 3.5.2, pytest-5.1.2, py-1.8.0, pluggy-0.12.0
rootdir: C:\Users\wangli\PycharmProjects\Test\test
plugins: allure-pytest-2.8.5, html-1.22.0, metadata-1.8.0
collected 21 itemstest02.py <class 'int'> 1
.<class 'int'> 1
.<class 'int'> 2
.<class 'tuple'> (3, 4)
.<class 'int'> <class 'int'> 5 6
.<class 'tuple'> (7, 8)
.<class 'tuple'> (9, 10)
.<class 'int'> <class 'int'> 11 12
.<class 'int'> <class 'int'> 13 14
.<class 'set'> {16, 15}
.<class 'int'> <class 'int'> 17 18
.<class 'set'> {19, 20}
.<class 'set'> {21, 22}
.<class 'int'> <class 'int'> 24 23
.<class 'int'> <class 'int'> 25 26
.<class 'list'> [27, 28]
.<class 'int'> <class 'int'> 29 30
.<class 'list'> [31, 32]
.<class 'list'> [33, 34]
.<class 'int'> <class 'int'> 35 36
.<class 'int'> <class 'int'> 37 38
.============================= 21 passed in 0.09s ==============================Process finished with exit code 0

从上面尝试中我们可以看出,装饰器@pytest.mark.parametrize('参数名',list)装饰给方法,list里可以嵌套字符串、列表、字典、元祖,可根据具体情况去使用,当len(list)>1时,方法会被调用多次执行。

Python Pytest装饰器@pytest.mark.parametrize多样参数化(二)相关推荐

  1. Python Pytest装饰器@pytest.mark.parametrize用例数据驱动(三)

    一.测试用例用excel管理,存放地址:C:\Users\wangli\PycharmProjects\Test\test\files\apiCase.xls 二.代码实现如下: 1.封装读取exce ...

  2. Pytest装饰器@pytest.mark.parametrize一键生成接口正交试验用例

    我们在做接口测试时,有时会遇到涉及用例特别多的时候,每个用例都去手动调一遍,很费时费力,也是不现实的,这篇文章我们就解决下这种费时费力的情况. 一.业务需求 某所大学通信系共2个班级,刚考完某一门课程 ...

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

    Pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,类似DDT 如:@pytest.mark.parametrize('请求方式,接口地 ...

  4. pytest装饰器实现批量造数

    最近的需求需要造1w多的数据,如何用Python代码实现批量造数呢?强大的pytest装饰器可以再次冲出江湖 今天要介绍的就是pytest-repeat,实现重复执行脚本的目的 1.首先安装插件pyt ...

  5. Python之装饰器

    Python之装饰器 在不修改函数调用方式的前提下,也不能修改函数内部源代码!!!! 例如: 在每个季度公司发绩效,统计每个人的代码执行效率.咱们总不能是每个函数里加time模块吧. import t ...

  6. Python设计模式-装饰器模式

    Python设计模式-装饰器模式 代码基于3.5.2,代码如下; #coding:utf-8 #装饰器模式class Beverage():name = ""price = 0.0 ...

  7. 浅谈Django的中间件与Python的装饰器

    浅谈Django的中间件 与Python的装饰器 一.原理 1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该 ...

  8. Python的装饰器

    详解Python的装饰器 本文源码 https://github.com/tobyqin/python_decorator Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都 ...

  9. python 日志 装饰器_【Python】装饰器实现日志记录

    好的日志对一个软件的重要性是显而易见的.如果函数的入口都要写一行代码来记录日志,这种方式实在是太低效了,但一直没有找到更好的方法.后来用python写一些软件,了解到python的装饰器功能时,突然人 ...

最新文章

  1. 修改hosts文件使apache绑定域名指向本机
  2. sql注入——day02
  3. Spring boot整合dubbo
  4. Python遍历字典的四种方法对比
  5. 父子沪c转大牌过户_机动车异地过户(转籍)
  6. 检查Python中是否存在文件
  7. javaEE项目发布方法
  8. 数学文化 剩余定理
  9. 更新卡住解决_iPhone手机无法正常下载/安装应用的解决方法
  10. WEB API异常处理
  11. python制作的项目进度管理_项目管理必备——使用燃尽图监控项目整体进度
  12. 【PTA】 统计素数并求和
  13. C++实用的闹钟程序
  14. BIM模型文件下载——江湖别墅Revit模型
  15. 程序员北漂没钱整租,如何爱上合租?
  16. exchange 2010 脱机地址簿操作
  17. WR703N修砖记 --- 刷机有风险, 折腾需谨慎
  18. 30V转5V,30V转3.3V,30V转3V的5款降压芯片和LDO
  19. 脱离取源设备的IPTV宽带机房搭建心得(私网汇聚、内网直播源、单播组播模式混合使用、光猫机顶盒的破解、超级路由的组播转发)
  20. ionic 指定蒙文字体

热门文章

  1. JAVA解析存储过程获取的对象_java 解析数据的存储过程的
  2. idea调试怎么跳出循环_IDEA调试技巧条件断点实现步骤详解
  3. python中迭代器有哪些_Python迭代器:什么是Python中的迭代器以及如何使用它?
  4. python3 xpath_Python 3中用XPath解析XML
  5. idea(mac) 使用收集
  6. php7 ast,PHP7 的抽象语法树(AST)带来的变化
  7. 从sqlite 迁移 mysql_将 Ghost 从 SQLite3 数据库迁移到 MySQL 数据库
  8. oracle安装 衍生进程已退出,linux安装oracle 出现问题
  9. php 的html文件怎么打开,什么是html文件?html格式如何打开?(图)
  10. html读取servlet,简单html与servlet交互(HTML利用servlet读取txt)