def run_dependent(self): """执行依赖测试,获取结果""" # 通过sheet页名称读取对应sheet页的数据 self.data.get_sheet_data(self.sheet_name) # 通过sheet_name和case_id获取行号 row_num = self.operation_excel.get_rowNum_by_sheetName_and_caseId( self.sheet_name, self.case_id) url = self.data.get_request_url(row_num) method = self.data.get_request_method(row_num) request_data = self.data.get_request_data(self.sheet_name, row_num) headers = self.data.get_is_header(row_num) cookies = self.data.get_is_cookie(row_num) run_method = RunMethod() res = run_method.run_method(method, url, request_data, headers, cookies) return json.loads(res)
class RunTest(object): def __init__(self): read_conf = ReadConfig() # 邮件发送开关 self.is_on = read_conf.get_email_config_var('on_off') self.run_method = RunMethod() self.data = GetData() self.public_util = PublicUtil() self.headers_and_cookies = OperationJson() self.cookies = self.headers_and_cookies.get_key_words("cookie") self.headers = self.headers_and_cookies.get_key_words("header") def request_depend_logic(self, request_data, depend_case, depend_data, depend_filed, sheet, row_count): if depend_case == False: error = "工作表{0}中的第{1}行的case_id字段的数据类型错误". \ format(sheet, row_count + 1) log.error(error) return if not isinstance(depend_case, list): error = "工作表{0}中的第{1}行的case_id字段值外层数据不是列表类型的数据" \ .format(sheet, row_count + 1) log.error(error) return if depend_data is None or depend_data == False: error = "工作表{0}中的第{1}行的depend_data字段值不可为空或者数据类型错误". \ format(sheet, row_count + 1) log.error(error) return if not isinstance(depend_data, list): error = "工作表{0}中的第{1}行填写的depend_data字段值外层数据不是列表类型的数据". \ format(sheet, row_count + 1) log.error(error) return if depend_filed is None or depend_filed == False: error = "工作表{0}中的第{1}行的depend_filed字段值不可为空或者数据类型错误!". \ format(sheet, row_count + 1) log.error(error) return if not isinstance(depend_filed, list): error = "工作表{0}中的第{1}行的depend_filed字段值外层数据不是列表类型的数据". \ format(sheet, row_count + 1) log.error(error) return if not (len(depend_case) == len(depend_data) == len(depend_filed)): error = "工作表{0}中的第{1}行填写的depend_case,depend_data,depend_filed三个外层列表的长度不相等" \ .format(sheet, row_count + 1) log.error(error) return error for case_depend, data_depend, filed_depend in zip( depend_case, depend_data, depend_filed): if not isinstance(case_depend, list): error = "工作表{0}中的第{1}行的case_id字段值内层数据“{2}”不是列表类型的数据" \ .format(sheet, row_count + 1, case_depend) log.error(error) return if len(case_depend) != 2: error = "工作表{0}中的第{1}行的case_id字段值内层数据列表“{2}”的长度不等于2" \ .format(sheet, row_count + 1, case_depend) log.error(error) return if not isinstance(data_depend, list): error = "工作表{0}中的第{1}行的data_depend字段值内层数据“{2}”不是列表类型的数据" \ .format(sheet, row_count + 1, data_depend) log.error(error) return if not isinstance(filed_depend, list): error = "工作表{0}中的第{1}行的filed_depend字段值内层数据“{2}”不是列表类型的数据" \ .format(sheet, row_count + 1, filed_depend) log.error(error) return if len(data_depend) != len(filed_depend): error = "工作表{0}中的第{1}行的depend_data和depend_filed字段的内层列表数据{2}和{3}的长度不相等" \ .format(sheet, row_count + 1, data_depend, filed_depend) log.error(error) return depend_data = DependentData(request_data, case_depend, data_depend, filed_depend) request_data = depend_data.get_data_for_key() return request_data def run_case_logic(self): res = None pass_list = [] fail_list = [] result_path = self.data.get_save_result_path() # 获取结果文件路径 sheetName = self.data.get_sheet_names() # 获取当前工作簿中所有工作表的名称 for sheet in sheetName: self.data.get_sheet_data(sheet) # 通过sheet页名称读取对应sheet页的数据 row_counts = self.data.get_sheet_lines() # 获取sheet页的总行数 for row_count in range(1, row_counts): log.info("工作表:{0}-->行号:{1} {2}".format(sheet, row_count, "=" * 200)) is_run = self.data.get_is_run(row_count) if is_run: url = self.data.get_request_url(row_count) log.info("请求地址: {}".format(url)) method = self.data.get_request_method(row_count) log.info("请求方法: {}".format(method)) request_data = self.data.get_request_data(sheet, row_count) log.info("请求数据: {}".format(request_data)) header = self.data.get_is_header(row_count) log.info("请求头部: {}".format(header)) cookies = self.data.get_is_cookie(row_count) log.info("Cookies: {}".format(cookies)) expect_list = self.data.get_expect_data(row_count) log.info("预期结果: {}".format(expect_list)) depend_case = self.data.get_is_case_depend(row_count) if depend_case is not None: # 处理依赖关系 log.info("开始处理接口之间的依赖关系流程{}".format(">" * 150)) log.info("依赖case: {}".format(depend_case)) depend_data = self.data.get_depend_data(row_count) log.info("依赖数据: {}".format(depend_data)) depend_filed = self.data.get_depend_filed(row_count) log.info("依赖字段: {}".format(depend_filed)) request_data = self.request_depend_logic( request_data, depend_case, depend_data, depend_filed, sheet, row_count) log.info("更新请求数据:{}".format(request_data)) log.info("结束处理接口之间的依赖关系流程{}".format("<" * 150)) res = self.run_method.run_method(method, url, request_data, header, cookies) if self.public_util.is_contain(expect_list, res): self.data.write_real_result(sheet, row_count, 'pass') pass_list.append([sheet, row_count]) else: log.info("结果比对fail的响应{}".format(res)) self.data.write_real_result(sheet, row_count, res) fail_list.append([sheet, row_count]) return pass_list, fail_list, result_path def run(self): # 运行所有case result = list(self.run_case_logic()) # 发送邮件 if self.is_on == 'on': sendEmail = SendEmail() sendEmail.send_email(result[0], result[1], result[2]) log.info("本次测试完成,已将测试结果通过邮件发送至各位,请注意查收!") else: log.info("邮件发送开关配置关闭,请打开开关后可正常自动发送测试报告")