接口自动化测试,响应参数校验,比对两个复杂的json对象是否为子集关系

接口自动化测试中,对于复杂的JSON响应进行断言时,可以检查响应是否包含预期内容。本文介绍了如何基于JsonPath实现一个自定义函数,用于判断响应JSON是否为预期JSON的子集,以此确保测试用例执行成功。
摘要由CSDN通过智能技术生成

        在接口自动化测试过程中,经常会断言响应;当碰到复杂响应时,很难全量匹配判断是否符合预期,可以使用比对响应报文中是否包含预期的结果,来判断用例是否执行成功。网上搜索了一下,试了几个方式都没有达到预期结果,于是基于jsonpath模块,自己手写了一个函数。

import jsonpath

def cmp_data(exp, data):
    """
    判断exp表达式,是否为data的子集。
    :param exp: 表达式
    :param data: 对比的数据。
    :return: data 里面包含exp 返回True, 反之返回False
    """
    val_data_list = jsonpath.jsonpath(data, "$..*")

    for val in val_data_list:
        if isinstance(exp, list):
            if isinstance(val, list):
                for exp_data in exp:
                    if not isinstance(exp_data, list) and not isinstance(exp_data, dict) and exp_data not in val:
                        break
                    if isinstance(exp_data, list) or isinstance(exp_data, dict):
                        return cmp_data(exp_data, val)
                else:
                    return True
        elif isinstance(exp, dict):
            i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值