简介:

  • pytest.mark.parametrize 是 pytest 的内置装饰器,它允许你在 function 或者 class 上定义多组参数和 fixture 来实现数据驱动。
  • @pytest.mark.parametrize() 装饰器接收两个参数:
  • 第一个参数以字符串的形式存在,它代表能被被测试函数所能接受的参数,如果被测试函数有多个参数,则以逗号分隔;
  • 第二个参数用于保存测试数据。如果只有一组数据,以列表的形式存在,如果有多组数据,以列表嵌套元组的形式存在(例如:[1,1]或者[(1,1),(2,2)])

格式

@pytest.mark.parametrize(args_name,args_value)
args_name:参数名
args_value:参数值(列表,元组,字典列表,字典元组)
有多少个值,用例就会执行多少次
示例:value是列表
import pytest

class TestApi:

    @pytest.mark.parametrize('keyName', ['v1', 'v2'])
def test_01_api(self, keyName):
"""
keyName有两个值,所有会执行两次
这里的keyName每次的结果对应的v1和v2
"""
print(keyName) def test_02_api(self):
...
示例:列表套列表
class TestApi:
# 两个name,列表套列表
@pytest.mark.parametrize('keyName,name2', [['v1', 'v2'],['v3','v4']])
def test_01_api(self, keyName,name2):
"""
实际效果是keyname对应v1,name2对应v2
keyname对应v3,name2对应v4
与unittest的ddt里面的@unpack解包一样
"""
print(keyName,name2) def test_02_api(self):
...
   
 
pytest.mark.parametrize和pytest.fixtrue结合使用
如果测试数据需要在 fixture 方法中使用,同时也需要在用例中使用,可以让 parametrize 的 indirect 参数为 True
indirect = True,pytest 会把 argnames 当做函数执行,将 argvalues 作为参数传入到 argnames 函数中
 class TestApi:
# 定义fixture
@pytest.fixture()
def my_data(self, request):
return request.param # 将fixtrue方法传入argname,indirect声明
@pytest.mark.parametrize('my_data', [1, 2, 3], indirect=True)
def test_01_api(self, my_data):
print(my_data) def test_02_api(self):
...

5.@pytest.mark.parametrize()数据驱动的更多相关文章

  1. pytest自动化6:pytest.mark.parametrize装饰器--测试用例参数化

    前言:pytest.mark.parametrize装饰器可以实现测试用例参数化. parametrizing 1.  下面是一个简单是实例,检查一定的输入和期望输出测试功能的典型例子 2.  标记单 ...

  2. pytest.mark.parametrize()参数化应用二,读取json文件

    class TestEnorll(): def get_data(self): """ 读取json文件 :return: """ data ...

  3. pytest.mark.parametrize()参数化的应用一

    from page.LoginPage import Loginpage import os, sys, pytest base_dir = os.path.dirname(os.path.dirna ...

  4. Pytest系列(9) - 参数化@pytest.mark.parametrize

    如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 pytest允许在多个级别启 ...

  5. pytest.6.Parametrize Fixture

    From: http://www.testclass.net/pytest/parametrizing_fixture/ 背景 @pytest.mark.parametrize 装饰器可以让我们每次参 ...

  6. pytest参数化 parametrize

    pytest.mark.parametrize装饰器可以实现测试用例参数化 parametrizing 1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子 # content of test ...

  7. pytest mark中的skip,skipif, xfail

    这些测试的过滤,或是对返回值的二重判断, 可以让测试过程更精准,测试结果更可控, 并可以更高层的应用测试脚本来保持批量化执行. import pytest import tasks from task ...

  8. pytest 用 @pytest.mark.usefixtures("fixtureName")或@pytest.fixture(scope="function", autouse=True)装饰,实现类似setup和TearDown的功能

    conftest.py import pytest @pytest.fixture(scope="class") def class_auto(): print("&qu ...

  9. pytest 用 @pytest.mark.usefixtures("fixtureName")装饰类,可以让执行每个case前,都执行一遍指定的fixture

    conftest.py import pytest import uuid @pytest.fixture() def declass(): print("declass:"+st ...

随机推荐

  1. ceph 005 赋权补充 rbd块映射

    我的ceph版本 [root@serverc ~]# ceph -v ceph version 16.2.0-117.el8cp (0e34bb74700060ebfaa22d99b7d2cdc037 ...

  2. Vim配置文件-详解(.vimrc)

    Vim配置文件的作用 Vim启动时,会根据配置文件(.vimrc)来设置 Vim,因此我们可以通过此文件来定制适合自己的 Vim Vim分类 系统Vim配置文件/etc/vimrc 所有系统用户在启动 ...

  3. React报错之React hook 'useState' is called conditionally

    正文从这开始~ 总览 当我们有条件地使用useState钩子时,或者在一个可能有返回值的条件之后,会产生"React hook 'useState' is called conditiona ...

  4. K8S中部署apisix(非ingress)

    不使用pvc的方式在K8S中部署apisix-gateway 简介 因为公司项目准备重构,现在做技术储备,之前公司项目使用的ocelot做网关,ocelot是.net平台下的一个网关,也是很不错,但是 ...

  5. 【JDBC】学习路径5-提取JDBCUtils工具类

    回顾我们上面几节的内容,我们发现重复代码非常多,比如注册驱动.连接.关闭close()等代码,非常繁杂. 于是我们将这些重复的大段代码进行包装.提取成JDBCUtils工具类. 第一章:提取注册连接模 ...

  6. 做自动化测试选择Python还是Java?

    你好,我是测试蔡坨坨. 今天,我们来聊一聊测试人员想要进阶,想要做自动化测试,甚至测试开发,如何选择编程语言. 前言 自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发展的 ...

  7. pytest精髓__fixture

    命令:fixture(scope='function',params=None,autouse=False,ids=None,name=None) 参数说明 scope:有四个级别参数函数" ...

  8. 第五十一篇:webpack中的loader(二) --less-loader

    好家伙 先扩充一下知识点: 什么是.less文件? 作为一名前端开发的同学,很多时候我们都无法避免地要去写大量的 CSS 代码, 而且耗费的时间还不少,所以学习一种能够提升开发效率的 CSS 预处理器 ...

  9. sql报错收集

    踩坑记录: 当出现如下错误 Not enough parameters for the SQL statement 多半是因为插入时填写的字段名有误 json.decoder.JSONDecodeEr ...

  10. Homework7

    问:了解java的反射机制. 答:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法.而对于任意一个对象,都能够调用它的任意一个方法.这种动态获取的信息以及动态调用对象的 ...