123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import json
- import traceback
- import yaml
- from common.yaml_util import read_data_yaml, get_project_path
- from common.log_util import error_log
- # 读取测试用列
- def read_testcase(yaml_path):
- try:
- # with open(get_project_path() + yaml_path, mode='r', encoding='utf-8') as f:
- with open(yaml_path, mode='r', encoding='utf-8') as f:
- arg_names = yaml.load(stream=f, Loader=yaml.FullLoader)
- if len(arg_names) >= 2:
- return arg_names
- else:
- if "parameterize" in dict(*arg_names).keys():
- new_arg_names = ddt(*arg_names)
- return new_arg_names
- else:
- return arg_names
- except Exception as e:
- error_log("读取测试用例方法read_testcase异常:%s" % str(traceback.format_exc()))
- def ddt(arg_names):
- # 新方法
- try:
- arg_names_str = json.dumps(arg_names)
- data_list = arg_names["parameterize"]
- key_length = len(data_list[0])
- # print(key_length)
- length_success = True
- # 循环数据
- for param in arg_names["parameterize"]:
- if len(param) != key_length:
- length_success = False
- error_log("此条数据有误:%s" % param)
- # 替换值
- new_art_names = []
- if length_success:
- for x in range(1, len(data_list)):
- # print(data_list[x])
- temp_arg_names = arg_names_str
- for y in range(0, len(data_list[x])):
- if isinstance(data_list[x][y], int) or isinstance(data_list[x][y], float):
- temp_arg_names = temp_arg_names.replace('"$ddt{' + data_list[0][y] + '}"', str(data_list[x][y]))
- else:
- temp_arg_names = temp_arg_names.replace("$ddt{" + data_list[0][y] + "}", str(data_list[x][y]))
- new_art_names.append(json.loads(temp_arg_names))
- # print(new_art_names)
- return new_art_names
- except Exception as e:
- error_log("数据驱动ddt异常:%s" % str())
|