微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pytest学习九 - pytest.mark.parametrize的使用

一、前言

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

二、如何使用

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

1、一个参数一个

示例代码如下:

# 一个参数一个值
@pytest.mark.parametrize("input",["输入值"])
def test_case1(input):
    print("\n" + input)
    assert input == "输入值"

运行结果如下图:

2、一个参数多个值

示例代码如下:

@pytest.mark.parametrize("input",["输入值1","输入值2","输入值3","输入值4","输入值5"])
def test_case2(input):
    print("\n" + input)
    assert '输入值' in input

运行结果如下:

3、多参数多值

示例代码如下:

@pytest.mark.parametrize("userName,passWord",[("xiaoqiang","123456"),("rose",("jone",("Alex","123456")])
def test_login(userName,passWord):
    print(userName + " : " + passWord)
    assert userName == 'rose'

运行结果如下:

4、多个参数的混合使用

有点类似笛卡尔积的意思,示例代码如下:

data1 = [1,2]
data2 = ["python","java"]
data3 = ["软","件","测","试","君"]


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

运行结果如下:

5、参数化 ,传入字典数据

示例代码如下:

json=({"username":"alex","password":"123456"},{"username":"rongrong","password":"123456"})
@pytest.mark.parametrize('json',json)
def test_parametrize_1(json):
    print(f'字典为\n{json}')
    print(f'username : {json["username"]},password : {json["password"]}')

运行结果如下:

6、参数化集合标记的使用

示例代码如下:

@pytest.mark.parametrize("user,pwd",pytest.param("jone","123456",marks=pytest.mark.xfail),pytest.param("Alex",marks=pytest.mark.skip)])
def test_login(user,pwd):
    print(user + " : " + pwd)
    assert user == "rose"

运行结果如下:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐