DDT数据驱动方法 $ddt{}
对 $ddt{}中的数据数据进行替换
def ddt(caseinfo):
if "parameterize" in caseinfo.keys():
caseinfo_str = json.dumps(caseinfo)
for param_key, param_value in caseinfo["parameterize"].items():
key_list = param_key.split("-")
print("------key和value------")
print(key_list,param_value)
length_flag = True
print("------data数据列表------")
#规范yaml数据文件的写法
data_list = read_data_yaml(param_value)
for data in data_list:
print(data)
if len(data) != len(key_list):
length_flag = False
break
# 替换值
print("------替换值------")
new_caseinfo = []
if length_flag:
for x in range(1, len(data_list)): # 循环数据的行数
temp_caseinfo = caseinfo_str
for y in range(0, len(data_list[x])): # 循环数据列
if data_list[0][y] in key_list:
# 替换原始的yaml里面的$ddt{}
# 数字类型去掉“”
if isinstance(data_list[x][y], int) or isinstance(data_list[x][y], float):
temp_caseinfo = temp_caseinfo.replace('"$ddt{'+data_list[0][y]+'}"',str(data_list[x][y]))
else:
temp_caseinfo = temp_caseinfo.replace("$ddt{"+data_list[0][y]+"}", str(data_list[x][y]))
print(temp_caseinfo)
new_caseinfo.append(json.loads(temp_caseinfo))
return new_caseinfo
else:
return caseinfo
@allure.story("删除标签")
@pytest.mark.parametrize("caseinfo", read_testcase_yaml("./testcases/wx/delete_flag.yaml"))
def test_delete_flag(self, caseinfo):
res = RequestsUtil("base", "base_weixin_url",WxFun()).standard_yaml(caseinfo)
运行结果



