class DependdentData: def __init__(self,case_id): self.case_id = case_id self.opera_excel = OperationExcel() self.data = GetData() #通过case_id去获取该case_id的整行数据 def get_case_line_data(self): rows_data = self.opera_excel.get_rows_data(self.case_id) return rows_data #执行依赖测试,获取结果 def run_dependent(self): run_method = RunMethod() row_num = self.opera_excel.get_rows_num(self.case_id) request_data = self.data.get_data_for_json(row_num) header = self.data.is_header(row_num) method = self.data.get_request_method(row_num) url = self.data.get_request_url(row_num) res = run_method.run_main(method,url,request_data,header) return json.loads(res) #根据以来的key去获取执行依赖测试case的相应,然后返回 def get_data_for_key(self,row): depend_data = self.data.get_data_for_key(row) response_data = self.run_dependent() json_exe = parse(depend_data) madle = json_exe.find(response_data) return [math.value for math in madle][0]
class OperaDependent(): def __init__(self, case_id): self.case_id = case_id self.get_data = GetData() self.opera_excel = OperationExcel() self.run_case = RunMethod() def run_dependent_case(self): # 执行依赖的用例 row_num = self.opera_excel.get_rows_num(self.case_id) url = self.get_data.get_url(row_num) method = self.get_data.get_method(row_num) cookie = self.get_data.is_cookie(row_num) if cookie == 'read': cookie = self.get_data.read_cookie() data = self.get_data.get_headers_data(row_num) res = self.run_case.run_main(url=url, headers=cookie, method=method, params=data, data=data) return json.loads(res.text) def get_data_for_key(self, row): depend_data = self.get_data.get_dependent_data(row) response_data = self.run_dependent_case() json_exe = parse(depend_data) madle = json_exe.find(response_data) return [math.value for math in madle][0]
class DependData(object): '''有依赖的case处理模块,case2依赖case1点数据 ''' def __init__(self, case_id): self.case_id = case_id self.opera_excel = OperationExcel() self.get_data = GetData() # 获取目标行的数据 def get_case_line_data(self): return self.opera_excel.get_rows_data(self.case_id) # 执行case1用例返回结果 def run_denpend(self): run_method = RunMain() # 执行请求 row_num = self.opera_excel.get_rows_num(self.case_id) + 1 # print(row_num) request_json = self.get_data.get_data_json(row_num) url = self.get_data.get_request_url(row_num) # print(url) request_method = self.get_data.get_request_method(row_num) is_header = self.get_data.get_is_header(row_num) res = run_method.run_main(url, request_method, request_json, is_header) # 返回请求结果 return res # 在case1用例返回的数据中,拿到case2所需要的字段的数据,返回 def get_data_key(self, row): depend_data_key = self.get_data.get_depend_key(row) # print(depend_data_key) # 将str数据类型转换为json数据类型(dict字典) response_data = json.loads(self.run_denpend()) # print(type(response_data)) # 需要在json中匹配的字段规则 jsonpath_expr = parse(depend_data_key) # 在json数据中查找规则字段 返回一个list male = jsonpath_expr.find(response_data) # 返回需要的对应字段中的内容 return [match.value for match in male][0]
class DepnedentData: def __init__(self, case_id): self.case_id = case_id self.operation = OperationExcel() self.data = GetData() # 根据case_id,获取整行的数据 def get_case_line_data(self): self.operation.get_rows_data(self.case_id) # 执行依赖测试,获取结果 def run_depnedent(self): run_method = RunMethod() row_num = self.operation.get_rows_num(self.case_id) # 获取行号 request_data = self.data.get_json_data(row_num) # 获取请求数据 method = self.data.get_request_method(row_num) # 获取请求方法 url = self.data.get_request_url(row_num) cookies = {"SESSION": "bdbd5d09-29c5-40f8-aa16-cae274c1c6cd"} cookie = self.data.get_cookies_value(row_num) if cookie == 'yes': get_cookie = OperationJson('../dataconfig/cookie.json') cooki = get_cookie.get_data('SESSION') cookies = {"SESSION": cooki} res = run_method.run_main(method, url, request_data, cookies) # 发送请求 else: res = run_method.run_main(method, url, request_data) return json.loads(res) # 根据依赖的key去获取,依赖测试case的响应,得到对应的字段并且返回 def get_data_for_key(self, row): depent_data = self.data.get_depentent_key(row) # 获取匹配的依赖数据 response_data = self.run_depnedent() json_exe = parse(depent_data) # 以depent_data去匹配字段 madel = json_exe.find(response_data) return [math.value for math in madel]
class DependData: def __init__(self, case_id): self.opera_excel = OperationExcel() self.case_id = case_id self.data = GetData() self.opera_db = OperaMysql() #通过caseid获取该case的整行数据 def get_case_line_data(self): rows_data = self.opera_excel.get_rows_data(self.case_id) return rows_data #执行依赖case,获取接口返回结果 def run_depend(self): run_method = RunMethod() row_num = self.opera_excel.get_rows_num(self.case_id) request_data = { 'Head': '{"UserID":3,"TimeStamp":"1516156123","Sign":"FC7B4D3405863A6D06DC4D6961B708BF"}', 'Data': self.data.get_data_for_json(row_num) } header = self.data.is_header(row_num) url = self.data.get_request_url(row_num) method = self.data.get_request_method(row_num) res = run_method.runmain(method, url, request_data, header) return json.loads(res) #根据依赖的key获取获取执行依赖测试case的响应数据然后返回给下一个接口的请求字段----难点 def get_data_for_key(self, row): depend_data = self.data.get_depend_key(row) #拿到了依赖case的结果 response_data = self.run_depend() print(type(response_data)) response_data_dict = json.loads(response_data) print(type(response_data_dict)) code = response_data_dict['result']['Code'] if code == 0: #拿到RoomList roomlist = response_data_dict['result']['Result'][0]['RoomList'] hotelid = response_data_dict['result']['Result'][0]['RoomList'][0][ 'HotelId'] sessionid = response_data_dict['result']['Result'][0]['SessionId'] pk = '64b7a5f65a2ac326070699ba651691cc' rateinfoList = [] rate_code_list = [] attachment_key_list = [] i = 0 j = 0 #遍历response_data_dict循环获取ratecode和attachmentkey for i in range(0, len(roomlist)): rateinfoList.append(roomlist[i]['RateInfoList']) # print(rateinfoList[0]) for j in range(0, len(rateinfoList[i])): rate_code_list.append( roomlist[i]['RateInfoList'][j]['RateCode']) attachment_key_list.append( roomlist[i]['RateInfoList'][j]['AttachmentKey']) listra = [ (sessionid, hotelid, roomlist[i]['RateInfoList'][j]['RateCode'], roomlist[i]['RateInfoList'][j]['AttachmentKey'], pk) ] sqlinsert = """insert into test.RatePolicy(SessionId,HotelId,RateCode,attchment,pk) VALUES (%s,%s,%s,%s,%s)""" self.opera_db.insert_many_db(sqlinsert, listra) #在结果集中找字段 #depend_data_a = ["result"]["Result"][0]["roomlist"][0]["RateInfoList"][0][depend_data] #json_exe = parse('result.Result[*].roomlist[*].RateInfoList[*].RateCode') #结果集 #rate_code_list = [match.value for match in parse('result.Result[0].RoomList[0].RateInfoList[*].RateCode').find(response_data_dict)] #返回list的第一个结果 print(rate_code_list) print(attachment_key_list) return [rate_code_list, attachment_key_list, sessionid] else: return None