pytest学习(四)- @pytest.mark.parametrize 参数化的使用

一、前言

Pytest中参数化语法
@pytest.mark.parametrize(‘参数名’,list) 可以实现测试用例参数化

  • 如果只有一个参数,里面则是值的列表如:@pytest.mark.parametrize(“username”, [“yy”, “yy2”,
    “yy3”]) 或者是 @pytest.mark.parametrize([“username”], [“yy”, “yy2”, “yy3”])

  • 如果有多个参数,则需要用元组来存放值,一个元组对应一组参数的值,如:@pytest.mark.parametrize(“name,pwd”,
    [(“yy1”, “123”), (“yy2”, “123”), (“yy3”, “123”)])

二、使用

1、一个参数一个值

示例代码:

@pytest.mark.parametrize('input', ['输入值1'])
def test01(input):
    print('\n ', input)
    assert input == '输入值1'

结果:在这里插入图片描述

2、一个参数多个值

示例代码:

@pytest.mark.parametrize('input', ['输入值1','输入值2','输入值3','输入值4'])
def test01(input):
    print(input)

结果:
在这里插入图片描述

3、多个参数多个值

代码示例1:

@pytest.mark.parametrize('user, pwd', [('root', '123'), ('admin', '456')])
def test_03(user, pwd):
    db = {
        'root': '202cb962ac59075b964b07152d234b70',
        'admin': '250cf8b51c773f3f8dc8b4be867a9a02'
    }

    assert hashlib.md5(pwd.encode()).hexdigest() == db[user]

结果:
在这里插入图片描述
4、多个参数混合使用
代码示例,类似于笛卡尔积:

data1 = ['A', 'B']
data2 = ['1', '2']
data3 = ['python', 'C++', 'java', 'shell']


@pytest.mark.parametrize('a', data1)
@pytest.mark.parametrize('b', data2)
@pytest.mark.parametrize('c', data3)
def test_04(a, b, c):
    print(f"生成新的组合为[{a} {b} {c}]")

结果:
在这里插入图片描述

5、参数化,传入字典数据
代码示例:

json = [{'user': 'admin', 'pwd': '123'}, {'user': 'root', 'pwd': '456'}]


@pytest.mark.parametrize('json', json)
def test_06(json):
    print(f'\n {json}')
    print(f'user: {json["user"]}, pwd: {json["pwd"]}')

结果:
在这里插入图片描述

6、装饰测试类
代码示例:

data6 = [(1, 2, 3), (2, 3, 5)]


@pytest.mark.parametrize('a,b,expect', data6)
class TestCase():
    def test01(self, a, b, expect):
        print(f'\n函数01 测试数据:{a}+{b}, 结果为{expect}')
        assert a + b == expect


    def test02(self, a, b, expect):
        print(f'\n函数02 测试数据:{a}+{b}, 结果为{expect}')
        assert a + b == expect

结果:
在这里插入图片描述

小结:
当装饰器 @pytest.mark.parametrize 装饰测试类时,会将数据集合传递给类的所有测试用例方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值