2.4 统一断言处理compare

这篇博客介绍了一个用于接口测试的自动化处理方法,通过`compare`函数对比预期的响应(res)与实际请求的response。函数首先检查参数类型,然后对数组中的每个case进行正则匹配,确保请求响应符合预期。示例展示了登录接口的测试用例格式,其中res数组可以包含多个预期值对象,每个对象可以有一个或多个字段。该方法适用于批量校验接口返回数据的正确性。
摘要由CSDN通过智能技术生成

一、对response进行断言,判断是否符合预期,可以统一进行处理

/**
 * 对两个对象之间做正则比较
 * arr为数组,abjb为json对象
 * @type {{typeJudge?: function(*=): string}}
 */
const type = require('./typejudge')

exports.compare = function (arr, objb) {
    let msg = '';
    let flag = true;
    if (type.typeJudge(arr) !== 'Array') {
        (type.typeJudge(arr) !== 'Array').should.be.false("First parameter's type should be Array");
    }
    if (arr.length === 0) {
        (arr.length === 0).should.be.false("parameter can't be empty");
    } else {
        for (let i = 0; i < arr.length; i++) {
            let target = JSON.stringify(arr[i])
                .replace('{', '')
                .replace('}', '')
                .split(',');
            for (let o of target) {
                let reg = new RegExp(o);
                if (reg.test(JSON.stringify(objb)) !== true) {
                    msg += ` ${o},  but nothing to be matched\n`;
                    flag = false;
                }
            }
            if (flag === false) {
                (flag === false).should.be.false(msg);
            }

        }
    }
}

二、第一个参数是数组,第二个参数的请求的response

如果用例中的case中满足一定的格式,就会去判断是否符合预期,示例格式如下

/**
 * 登录接口case
 * userList数组中每个对象都是一条case
 * res数组中存放预期值
 * @type {[{res: [{errorMsg: null}, {success: boolean}], password: string, userName: string}, {res: *[], password: string, userName: string}, {res: *[], password: string, userName: string}, {res: *[], password: string, userName: string}]}
 */
exports.userList = [
    {userName: 'user', password: 'test123', res: [{errorMsg:null},{success:true}]}
];

满足上述示例userList中的res数组格式,将res数组传到compare的第一个参数,将实际请求的response放到第二个参数即可

res中的多个字段,可以存在一个对象中,也可以分成多个对象,如下所示,效果是一样的

res: [{errorMsg:null},{success:true}]
res: [{errorMsg:null,success:true}]

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值