assert响应断言封装
import ast import jsonpath from common.mylogger import logger class MyAssert: def assert_response_value(self,check_str, response_dict): """ :param check_str: 从excel当中,读取出来的断言列。是一个列表形式的字符串。里面的成员是一个断言 :param response_dict: 接口请求之后的响应数据,是字典类型。 :return: None """ # 所有断言的比对结果列表 check_res = [] # 把字符串转换成python列表 check_list = ast.literal_eval(check_str) # 比eval安全一点。转成列表。 for check in check_list: logger.info("要断言的内容为:\n{}".format(check)) # 通过jsonpath表达式,从响应结果当中拿到了实际结果 actual = jsonpath.jsonpath(response_dict, check["expr"]) if isinstance(actual, list): actual = actual[0] logger.info("从响应结果当中,提取到的值为:\n{}".format(actual)) logger.info("期望结果为:\n{}".format(check["expected"])) # 与实际结果做比对 if check["type"] == "==": logger.info("比对2个值是否相等。") logger.info("比对结果为:\n{}".format(actual == check["expected"])) check_res.append(actual == check["expected"]) elif check["type"] == "gt": logger.info("比对2个值的大小。") logger.info("比对结果为:\n{}".format(actual > check["expected"])) if False in check_res: logger.error("部分断言失败!,请查看比对结果为False的") raise AssertionError else: logger.info("所有断言成功!")