Python pytest.mark.parametrize参数化-数据驱动

简介

pytest中装饰器@pytest.mark.parametrize('参数名',list)可以实现测试用例参数化,减少代码冗余提高代码效率。还方便函数对测试数据的获取。

参数解析

@pytest.mark.parametrize('参数名',list).
1、参数名:格式string类型,多个使用‘,’隔开
2、list:多组数据类型,列表包含元组 的形式,元组中的每个元素按参数名顺序与之一一对应
eg:
parametrize('a,b,c'[(1,2,3),(4,5,6),(7,8,9)]):每组数据对应关系分别为a=1,4,7;b=2,5,8;c=3,6,9;
3、list类型支持:parametrize( '参数名',list )
支持元组,列表
支持列表嵌套列表,列表嵌套元组,列表嵌套字典
支持类和函数的参数化

使用方法

1、单个变量(参数名),值为元组(list)

import pytest


@pytest.mark.parametrize('name', ("zhangsan", "zhangsi"))
def test_01(name):
    print(name)
    assert 'zhang' in name

if __name__ == '__main__':
    pytest.main(['test_abc.py', '-sq'])

执行结果:name分别打印出来,对比两次
在这里插入图片描述

2、多个变量(参数名),值为列表(list)

在这里插入图片描述

3、多个变量(参数名),多个值为列表(list)嵌套元组

import pytest

list1 = [("zhangsan", "111111"), ("lisi", "111111")]

@pytest.mark.parametrize('username,psw', list1)
def test_02(username, psw):
    print(username, psw)
    assert psw == '111111'


if __name__ == '__main__':
    pytest.main(['test_abc.py', '-sq'])

执行结果:对比
在这里插入图片描述

4、多个变量,值为列表嵌套列表

在这里插入图片描述

5、组合函数-笛卡尔集

import pytest

list1 = ["zhangsan", "lisi"]
list2 = ["111111", "111111"]


@pytest.mark.parametrize('user', list1)
@pytest.mark.parametrize('psw', list2)
def test_06(user, psw):
    print(user, psw)
    assert psw=='111111'

if __name__ == '__main__':
    pytest.main(['test_abc.py', '-sq'])

执行结果对比:
在这里插入图片描述

6、多个变量,值为列表嵌套字典

在这里插入图片描述

————————————————————————————————————————————
参考来自:https://www.cnblogs.com/hls-code/p/15039462.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值