5 断言

1 断言

# 断言
def do_assert(resp, name, check_str, resp_str):
    if resp.status_code == 200:
        if check_str.lstrip('{').rstrip('}') in resp.text:
            print(name + ' 1 pass')
            result_dict['result'] = 'pass'  # 记录执行结果
            # 提取需要的响应字段
            if resp_str != "" and resp_str != None:
                tmp_list = []
                # 返回指定字段
                result_list = get_target_value(resp_str, resp.json(), tmp_list)
                relate_dict[resp_str] = result_list[0]     # 关联字段放入字典
                print(relate_dict)
        else:
            print(name + ' 1 fail')
            result_dict['result'] = 'fail'
            print(resp.text)
    else:
        print(name + ' 200 fail')
        result_dict['result'] = 'fail'
        print(resp.text)
    result_dict['response'] = resp.text

 

2 提取 json 字符串

# 递归调用字典
def get_target_value(key, dic, tmp_list):
    """
    :param key: 目标key值
    :param dic: JSON数据
    :param tmp_list: 用于存储获取的数据
    :return: list
    """
    if not isinstance(dic, dict) or not isinstance(tmp_list, list):  # 对传入数据进行格式校验
        return 'argv[1] not an dict or argv[-1] not an list '

    if key in dic.keys():
        tmp_list.append(dic[key])  # 传入数据存在则存入tmp_list
    else:
        for value in dic.values():  # 传入数据不符合则对其value值进行遍历
            if isinstance(value, dict):
                get_target_value(key, value, tmp_list)  # 传入数据的value值是字典,则直接调用自身
            elif isinstance(value, (list, tuple)):
                _get_value(key, value, tmp_list)  # 传入数据的value值是列表或者元组,则调用_get_value
    return tmp_list


def _get_value(key, val, tmp_list):
    for val_ in val:
        if isinstance(val_, dict):
            get_target_value(key, val_, tmp_list)  # 传入数据的value值是字典,则调用get_target_value
        elif isinstance(val_, (list, tuple)):
            _get_value(key, val_, tmp_list)  # 传入数据的value值是列表或者元组,则调用自身

 

posted @ 2021-02-23 14:48  栗子测试开发  阅读(78)  评论(0)    收藏  举报