def write_excel_value(self, dep_res): ''' 将依赖数据结果写回到excel表格指定的单元格中 :param dep_res: :return: ''' write_flag = False ope_excel = OperationExcel(**self.case_config) case_param_name_start = self.case_config.get("case_param_name_start", 0) #测试用例参数名开始行 case_row_value = ope_excel.get_sheet().row_values( case_param_name_start) row_num = self.case_rownum dep_res_dict = self.deal_req_res(dep_res) for update_param in dep_res_dict.keys(): for index, update_value in enumerate(case_row_value): if update_param in str(update_value).split("-")[1]: col_num = index ope_excel.writer_data(row_num, col_num, update_value) write_flag = True return write_flag
class DependCase: def __init__(self, case_dict, case_config): self.case_dict = case_dict # 获取的用例中的参数值,不是配置文件中的参数值 self.case_config = case_config # 获取执行接口用例配置文件内容,写回值时获取正确的sheetid self.ope_excel_case = OperationExcel(**self.case_dict) self.ope_excel_config = OperationExcel(**self.case_config) self.interface_run = InterfaceRun() self.case_rownum = int( self.ope_excel_config.get_row_num_for_value( self.case_dict.get("CaseID", 0), )) # 获取测试用例参数名所在行 self.param_name_rownum = int(self.case_dict.get("DepParamName", 0)) #获取依赖的参数名所在行 self.case_id = self.case_dict.get("DepCaseID", "") #获取依赖的测试用例ID self.case_value_rownum = self.ope_excel_case.get_row_num_for_value( self.case_id) #根据依赖caseid获取依赖测试用例执行行号 self.case_row_value = self.ope_excel_case.get_sheet().row_values( self.param_name_rownum) #根据参数名所在行号获取整行内容 self.hash_orders = self.case_dict.get("hash_orders", []) #获取依赖的测试用例ID的参数顺序列表,用于生成salt self.DepGetDataForm = self.case_dict.get("DepGetDataForm", "") #依赖提取数据格式 try: self.DepParamList = eval(case_dict.get("DepParamList", [])) except Exception as e: self.DepParamList = case_dict.get("DepParamList", []) #获取运行依赖case需要的各项请求数据 def get_dep_data(self): ''' :return: 依赖测试用例执行结果 ''' # 获取参数名所在行返回参数名列表 self.case_dict[ "case_param_name_start"] = self.param_name_rownum #用例参数名开始行号 self.case_dict[ "case_start_rownum"] = self.case_value_rownum # 用例参数值开始行号 # self.case_dict["hash_orders"] = self.hash_orders # 用例参数顺序列表 # self.case_dict["DepGetDataForm"] = self.hash_orders # 用例参数顺序列表 cpd = CommonParamDict(**self.case_dict) case_data = cpd.deal_param() #[[]] no_request_list = cpd.param.get_param_no_request_list() dep_res = self.deal_dep_param(no_request_list, case_data[0]) #获取依赖测试用列响应结果 dep_res_dict = self.deal_req_res(dep_res) write_flag = self.write_excel_value(dep_res) count = 1 while True: if not write_flag: write_flag = self.write_excel_value(dep_res) count = count + 1 if count > 3: break else: break print("依赖用例执行测试的结果={}".format(dep_res)) return dep_res_dict def deal_dep_param(self, no_request_list, case_data): ''' 接口用例发送请求之前去除掉非接口传输参数 :param no_request_list: 获取请求接口不传入参数列表 :param case_data: 测试用例 :return: ''' deal_param_list = [] no_request_dict = {} # 存放不参数请求的参数 req_data_dict = deepcopy(case_data) #深拷贝参数字典 for param in no_request_list: no_request_dict[param] = req_data_dict.pop(param) deal_param_list.append(req_data_dict) deal_param_list.append(no_request_dict) req_s_time = time.time() url = no_request_dict.get("Requrl", "") ori_res = self.interface_run.main_request("post", url, req_data_dict) req_e_time = time.time() hs = req_e_time - req_s_time try: res = ori_res.json() except Exception as e: res = ori_res.text print("依赖测试用执请求接口用时:{}".format(hs)) return res def deal_req_res(self, res_json): ''' 将依赖测试用例执行结果按提取规则及参数处理后转为字段的形式 :case_dict :param res_json: 依赖测试用例响应结果转为json形式 :return: ''' res = jsonpath(res_json, self.DepGetDataForm)[0][0] dep_res_dict = {} for dep_res in res: if dep_res in self.DepParamList: dep_res_dict[dep_res] = res.get(dep_res, "") return dep_res_dict def write_excel_value(self, dep_res): ''' 将依赖数据结果写回到excel表格指定的单元格中 :param dep_res: :return: ''' write_flag = False ope_excel = OperationExcel(**self.case_config) case_param_name_start = self.case_config.get("case_param_name_start", 0) #测试用例参数名开始行 case_row_value = ope_excel.get_sheet().row_values( case_param_name_start) row_num = self.case_rownum dep_res_dict = self.deal_req_res(dep_res) for update_param in dep_res_dict.keys(): for index, update_value in enumerate(case_row_value): if update_param in str(update_value).split("-")[1]: col_num = index ope_excel.writer_data(row_num, col_num, update_value) write_flag = True return write_flag