pytest使用parametrize数据驱动时,参数值无法循环获取yaml文件
all_file = [
'demo_test\\power\\create_power.yaml',
'demo_test\\login.yaml',
'demo_test\\command\\find_commandpage.yaml'
]
for i in range(len(all_file)):
@pytest.mark.parametrize('caseinfo',get_yaml_file(all_file[i]))
def test_request(caseinfo,get_token):
logging.basicConfig(level=logging.INFO)
log = logging.getLogger()
name=caseinfo['name']
header={'Authorization':get_token}
methond=caseinfo['request']['methond']
url=caseinfo['request']['url']
data=caseinfo['request']['data']
log.info(f'这是第{i}个文件')
log.info(f'执行的测试用例名称:{name}')
if methond.lower() == 'get':
res=Request.session.request(method=methond,url=url,params=data,headers=header)
elif methond.lower() == 'post':
res=Request.session.request(method=methond,url=url,json=data,headers=header)
只拿到了列表中最后一个参数的数据
2021-12-20 16:49:48 - test_request.py - test_request - test_request - 53 - INFO - 这是第2个文件
2021-12-20 16:49:48 - test_request.py - test_request - test_request - 54 - INFO - 执行的测试用例名称:分页查询命令
PASSED
不理解为什么列表中前两个的数据没有获取到
看看你的函数get_yaml_file是怎样一个返回值,或你可以了解一下parametrize的参数说明
https://blog.csdn.net/totorobig/article/details/112235358
优化get_yaml_file()方法,通过列表的append方法将各个路径的文件追加成一个新列表即可。
def get_yaml_file(filename):
with open(get_file_path()+filename,'r',encoding='utf-8') as f:
value=yaml.load(stream=f,Loader=yaml.FullLoader)
return value[0]
# print(value[0])
def case():
files = [
'demo_test\\device\\create_device.yaml',
'demo_test\\device\\find_devicebytype.yaml'
]
results = []
for file in files:
results.append(get_yaml_file(file))
return results