class BaseRequest(object): session = None @classmethod def get_session(cls): if cls.session is None: cls.session = requests.Session() return cls.session @classmethod def send_request(cls, case: list, env: str = 'dev') -> object: """处理case数据,转换成可用数据发送请求 :param case: 读取出来的每一行用例内容,可进行解包 :param env: 环境名称 默认使用config.yaml server下的 dev 后面的基准地址 return: 响应结果, 预期结果 """ case_number, case_title, path, token, method, parametric_key, file_obj, data, sql, expect, is_save = case logger.debug( f"用例进行处理前数据: \n 接口路径: {path} \n 请求参数: {data} \n 后置sql: {sql} \n 预期结果: {expect} \n 保存响应: {is_save}" ) # allure报告 用例标题 allure_title(case_title) # 处理url、header、data、file、的前置方法 url = ReadFile.read_config( f'$.server.{env}') + DataProcess.handle_path(path) allure_step('请求地址', url) header = DataProcess.handle_header(token) allure_step('请求头', header) data = DataProcess.handle_data(data) allure_step('请求参数', data) file = DataProcess.handler_files(file_obj) allure_step('上传文件', file_obj) # 发送请求 res = cls.send_api(url, method, parametric_key, header, data, file) allure_step('响应耗时(s)', res.elapsed.total_seconds()) allure_step('响应内容', res.json()) # 响应后操作 if token == '写': DataProcess.have_token['Authorization'] = extractor( res.json(), ReadFile.read_config('$.expr.token')) allure_step('请求头中添加Token', DataProcess.have_token) # 保存用例的实际响应 if is_save == "是": DataProcess.save_response(case_number, res.json()) allure_step('存储实际响应', DataProcess.response_dict) return res.json(), expect, sql
class BaseRequest(object): session = None @classmethod def get_session(cls): """ 单例模式保证测试过程中使用的都是一个session对象 :return: """ if cls.session is None: cls.session = requests.Session() return cls.session @classmethod def send_request(cls, case: list, env: str = 'dev') -> object: """处理case数据,转换成可用数据发送请求 :param case: 读取出来的每一行用例内容,可进行解包 :param env: 环境名称 默认使用config.yaml server下的 dev 后面的基准地址 return: 响应结果, 预期结果 """ case_number, case_title, header, path, method, parametric_key, file_obj, data, sql, expect, is_save = case logger.debug( f"用例进行处理前数据: \n 接口路径: {path} \n 请求参数: {data} \n 后置sql: {sql} \n 预期结果: {expect} \n 保存响应: {is_save}") # allure报告 用例标题 allure_title(case_title) # 处理url、header、data、file、的前置方法 url = DataProcess.handle_path(path, env) header = DataProcess.handle_header(header) data = DataProcess.handle_data(data) allure_step('请求数据', data) file = DataProcess.handler_files(file_obj) # 发送请求 response = cls.send_api(url, method, parametric_key, header, data, file) # 保存用例的实际响应 if is_save == "是": DataProcess.save_response(case_number, response) return response, expect, sql