目录
简介
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