def write_dependField(row): Gd=GetData() depend_case_id = Gd.is_depend(row) if depend_case_id: depend = DependentData(depend_case_id) # 获取依赖key depent_key=Gd.get_depent_key(row) # print(depent_key) # 将依赖数据写入请求数据 flag=depend.writeDependRequestDataToExcle(row) # print(flag) return flag else: return False
class DependentData(GetData): def __init__(self, case_id): super().__init__() # 实例依赖字段yaml文件 self.yamlField = OperationYaml('dependFieldInfo.yaml') # 数据依赖字段实例 self.dependFieldYaml = '' self.case_id = case_id self.data = GetData() self.depend_key_dict = {} #存放依赖key数据 #执行依赖测试,并返回结果 def run_dependent(self): row_num = self.opera_excle.get_row_num(self.case_id) depend_response = self.data.request_info(row_num) self.log.info(self.mylog.out_varname(depend_response)) return depend_response #根据依赖key去获取执行依赖测试case的响应,然后返回 def get_data_for_key(self, row): self.depend_data_dict = {} #执行前清空dict yamlDepentKey = self.data.get_depent_key(row) # print(yamlDepentKey) depend_Field_dict = {} #数据依赖字段 # response_data为依赖测试的执行结果 response_data = self.run_dependent() # print(response_data) try: # ''' 判断depend_data使用eval是否发生异常,如果异常当做单字符处理, # 如果没异常判断是否是list且是否为空,满足条件循环处理,否则不处理''' if isinstance(response_data, str): response_data = eval(response_data) if isinstance(yamlDepentKey, list) and yamlDepentKey: for i in yamlDepentKey: # print(i) # print(self.depend_key_dict) self.depend_data_parse(i, response_data) else: return None except SyntaxError as syntaxerror: print(syntaxerror) self.log.error(self.mylog.out_varname(syntaxerror)) self.depend_data_parse(yamlDepentKey, response_data) excleDepentKey = self.dependFiel_kw(row) depend_Field_dict[excleDepentKey] = self.depend_key_dict # print(self.depend_key_dict) return depend_Field_dict def depend_data_parse(self, depend_key, response_data): '''处理依赖''' if depend_key: # 定义要获取的key # 处理依赖时,只取响应中的第一个值 __dict = self.data.requestDataDispose.depend_data_parse( depend_key, response_data, index='one') # 合并字典 # 确保字典不能为空与类型必须时字典 if __dict and isinstance(__dict, dict): self.depend_key_dict.update(__dict) # 返回数据依赖字段 def dependFiel_kw(self, row): col = int(data_config.get_field_depend()) depend_field = self.opera_excle.get_cell_value(row, col) self.dependFieldYaml = '{}{}'.format(self.yaml['dependField'], row) # print('self.data.writelist',self.data.writelist) if not depend_field: # 判断field关键字是否存在存实例中 if self.dependFieldYaml in self.data.writelist: return self.dependFieldYaml else: return False else: return depend_field # 获取数据依赖字段 def get_depend_field(self, row): self.write_dependField(row) depend_field = self.dependFiel_kw(row) depend_field_data = self.yamlField.readforKey_onetier(key=depend_field) # print(depend_field) # print(depend_field_data) if depend_field_data: return depend_field_data else: return False # 写入数据依赖字段信息至yaml def write_dependField(self, row): try: dependFieldYaml = self.get_data_for_key(row) if dependFieldYaml: # '''这句代码用于处理yaml写入失败(浮点对象异常的问题) value = eval(demjson.encode(dependFieldYaml)) # print(value) self.yamlField.write_yaml(value) return True else: return False except BaseException as error: print(error) self.log.error(self.mylog.out_varname(error)) return False # 将依赖处理完毕的请求数据写入excle def writeDependRequestDataToExcle(self, row): source_data = self.get_depend_field(row) # print(self.mylog.out_varname(source_data)) falg = None if source_data: falg = self.data.writeDependFiledToRequestData( row, source_data=source_data) if falg: return True else: return False else: return False