class Dependent: def __init__(self,case_id): self.case_id = case_id self.oper_excel = OperationExcel() self.data = GetData() self.run = RunMethod() def dependent_run(self): #运行依赖的用例 case_row = self.oper_excel.get_case_row(self.case_id) method = self.data.get_request_way_value(case_row) url = self.data.get_url_value(case_row) data = self.data.get_data_for_json(case_row) header = self.data.get_is_header_value(case_row) res = self.run.run_method(method,url,data,header) return res def dependent_key_values(self,row): #获取需要依赖键的值 response_data = self.dependent_run() #运行依赖用例,获取其返回值 requests_data = self.data.get_response_dependent_value(row) #获取返回值里的某个键的值 response_data = json.loads(response_data) #将json数据转换成python可识别的对象 json_exe = parse(requests_data) #定义一个规则,以json格式去格式化接口返回的数据 mable = json_exe.find(response_data) #按照规则来查找整个结果集 return [math.value for math in mable] #官方写法,从结果集查找某部分数据
class RunTest: def __init__(self): self.getdata = GetData() self.run_method = RunMethod() self.oper_excel = OperationExcel() self.common_util = CommonUtil() self.oper_mysql = OperationMysql() self.sen_mail = SendEmail() def run_test(self): id = 0 pass_count = [] fail_count = [] row = self.oper_excel.get_data_lines() for id in range(1, row): is_run = self.getdata.get_is_run_value(id) if is_run: url = self.getdata.get_url_value(id) method = self.getdata.get_request_way_value(id) is_header = self.getdata.get_is_header_value(id) case_dependent = self.getdata.get_case_dependent_value(id) response_dependent = self.getdata.get_response_dependent_value( id) data_dependent = self.getdata.get_data_dependent_value(id) data = self.getdata.get_data_for_json(id) #expect = self.getdata.get_expect_from_mysql(id) expect = self.getdata.get_expect_value(id) result = self.getdata.get_result_value(id) if case_dependent != None: self.dependent = Dependent(case_dependent) dependent_data = self.dependent.dependent_key_values(id) data[data_dependent] = dependent_data #print(type(expect)) if is_header == 'write': res = self.run_method.run_method(method, url, data) #print(res['data']['url']) res = json.loads(res) #print(type(res)) oper_header = OperationHeader(res) oper_header.write_cookie() elif is_header == 'yes': oper_json = OperationJson( 'D:\pycharm\python2\\testdjango\demo\detaconfig\cookie.json' ) is_header = oper_json.get_json_data('apsid') cookie = {'apsid': is_header} res = self.run_method.run_method(method, url, data, cookie) else: res = self.run_method.run_method(method, url, data) #print(id,res,type(res),type(expect)) #print(expect,res) #self.sen_mail.sen_main(pass_count,fail_count) if self.common_util.is_contain(expect, res): self.getdata.write_data(id, 'pass') pass_count.append(id) print('pass') else: self.getdata.write_data(id, 'fail') fail_count.append(id) print('fail') print(len(pass_count)) self.sen_mail.sen_main(pass_count, fail_count)