@pytest.fixture(),此参数化装饰的函数可以作为参数传入其他函数
@pytest.mark.parametrize() ,此参数化方法支持传入单个参数或多个参数。
本文主要介绍第二种参数化方式
@pytest.mark.parametrize(“参数名称”,lists or tuple or set) ,传入单个参数。
参数名称仅作为参数名称,便于记忆,可随意起。
参数不管是lists或是tuple类型都可以运行成功,另外集合类型set(),顺便试了一下也是成功的不过没有特殊研究过。
import pytest
is_day = [1,2,3,4,5,6,]
is_years = (11,34,76,23,54,)
is_age = {11,23,45,67,88,}
@pytest.mark.parametrize('day,',is_day)
def test_01(day):
print(day)
return day
@pytest.mark.parametrize(“参数名称1,参数名称2,…”,[(2+1),(),…]) ,传入单个参数。
传入多个参数时,参数类型为list嵌套tuple [(),(),(),...]
形式。注意:参数名称的个数要与元组中的参数个数相对应。
import pytest
@pytest.mark.parametrize('a,b',[('1+2',3),('3+4',7),('2+2',4)])
def test_02(a,b):
assert eval(a)==b
import pytest
def list():
return [1,2,3,4,5,6,7]
@pytest.mark.parametrize('list',list())
def test_02(list):
print(list)
assert list is not None
[(),(),(),...]
类型形式。首先不管是读取本地txt、excel文件还是直接从mysql、redis获取的数据都需要对数据进行重新处理,处理成@pytest.mark.parametrize()可以接收的类型。我的处理方式:
def list():
return [1,2,3,4,5,6,7]
def list1():
return [4,5,67,89,98,33,45]
def switch(list1,list2):
lists = []
for day ,year in zip(list1,list2):
lists.append((day,) + (year,))
print(lists)
return lists
switch(list(),list1())
完整代码:
import pytest
def list():
return [1,2,3,4,5,6,7]
def list1():
return [4,5,67,89,98,33,45]
def switch(list1,list2):
lists = []
for day ,year in zip(list1,list2):
lists.append((day,) + (year,))
print(lists)
return lists
switch(list(),list1())
@pytest.mark.parametrize('list1,list2',switch(list(),list1()))
def test_02(list1,list2):
print(list1,list2)
assert list1,list2 is not None
第一次写文章有什么建议请大家多多提,一定会参考,谢谢!!!