pytest参数化
pytest.mark.parametrize()方式进行参数化
pytest.fixture()方式进行参数化,fixture装饰的函数可以作为参数传入其他函数
conftest.py 文件中存放参数化函数,可作用于模块内的所有
测试用例
支持元组,列表
支持列表嵌套列表,列表嵌套元组,列表嵌套字典
支持类和函数的参数化
一,@pytest.mark.parametrize('参数名',list)方式
pytest.mark.parametrize(argnames, argvalues),是pytest自带的装饰器之一
1. 传一个参数 @pytest.mark.parametrize('参数名',list)
2. 传两个参数@pytest.mark.parametrize('参数名1,参数名2',[(参数1_data[0], 参数2_data[0]),(参数1_data[1], 参数2_data[1])]) 进行参数化,参数值,是list,多组数据用元组类型; 传三个或更多参数也是这样传。list的每个元素都是一个元组,元组里的每个元素和按参数顺序一一对应
1、单个变量 ,参数为元组
1、单个变量
@pytest.mark.parametrize('user', ("zhangsan", "lisi"))
def test_01(self,user):
print(user)
2、单个变量,参数为列表
2、单个变量,参数为列表
datatest04=['zhangsan','lisi']
@pytest.mark.parametrize('user', datatest04)
def test_04(self,user):
print(user)
3、多个变量,列表中嵌套元组。列表中,每一组数据用元组格式
3、多个变量
@pytest.mark.parametrize('user,password',[("zhangsan","111111"),("lisi","222222")])
def test_02(self,user,password):
print(user,password)
4、多个变量,列表中嵌套列表。列表中,每一组数据用列表格式
data =[["zhangsan","111111111"],["lisi","2222222"]]
@pytest.mark.parametrize('user,password',data)
def test_05(self,user,password):
print(user,password)
5.组合函数-笛卡尔集
组合函数-笛卡尔集
data1 =["zhangsan","lisi"]
data2 = ["1111111", "2222222"]
@ pytest.mark.parametrize('user', data1)
@pytest.mark.parametrize('password',data2)
def test_06(self,user,password):
print(user,password)
6.列表嵌套字典
datatest07 = [{"user":"zhangsan", "password":"111111111"},{"user":"lisi","password":"222222"}]
@pytest.mark.parametrize("data", datatest07)
def test_07(self,data):
print(data)
print(data["user"],data["password"])