postman重构对比测试脚本

背景

项目要使用java对老服务重构,需要测试老服务与新服务的接口是否有差异,用postman内置的js模块实现

try{
    var java_data = JSON.parse(responseBody)
    // delete java_data['request_id']
 
    // 0 --> 0.00
    function returnFloat(value){
        var value=Math.round(parseFloat(value)*100)/100;
        var xsd=value.toString().split(".");

        if(xsd.length==1){
            value=value.toString()+".00";
            return value;
        }

        if(xsd.length>1){
            if(xsd[1].length<2){
                value=value.toString()+"0";
            }
            return value;
        }
    }

    function getDiffer(php_list, java_list) {
        return php_list.concat(java_list).filter(function(value, index, arr) {
            return arr.indexOf(value) === arr.lastIndexOf(value);
    })
    }

    var java_list_key = []
    var java_list_value = []
    var java_list_data_value = []
    
    // code=200 --> key --> key_list
    if (java_data.code === 200){
        for (var java_key in java_data){
            java_list_key.push(java_key)
            // java_list_value.push(java_data[java_key])
        }

        // key --> key_list
        for (var java_data_key in java_data.data){
            java_list_key.push(java_data_key)

            // =dict --> value_list   0 --> 0.00
            if (typeof java_data.data[java_data_key] == 'object'){
                for (var java_data_value in java_data.data[java_data_key]){
                    java_list_key.push(java_data_value.toString())
                    // console.log(java_data_value)
                    // console.log(java_data.data[java_data_key][java_data_value])
                    java_list_data_value.push(returnFloat(java_data.data[java_data_key][java_data_value]))
                }
            }
            // !=dict --> value_list
            else{
                // console.log(java_data.data[java_data_key])
                java_list_value.push(java_data.data[java_data_key])
            }

        }

        java_list_key = java_list_key.sort()
        java_list_data_value = java_list_data_value.sort()

        // console.log('java_key: ', java_list_key)
        // console.log('java_value: ', java_list_data_value)

    }
}catch(error){
    console.error("ERROR —————— JAVA 错误: " + error.name + ": " + error.message)
}

try{
    // php 域名
    var php_url = pm.environment.get('php_url')

    // 请求地址
    var path = php_url + pm.request.url.getPath()
    // console.log('php 请求地址 : ' + path);

    // 获取请求参数
    var request_data = pm.request.body.formdata.all()
    var urlencoded_data = ''
    for (var request_data_value in request_data){
        urlencoded_data = urlencoded_data + request_data[request_data_value].key + '=' + request_data[request_data_value].value + '&'
        // console.log(request_data[request_data_value].value);
    }
    var urlencoded_data = urlencoded_data.substring(0, urlencoded_data.length-1)
    // console.log('请求参数 : ' + urlencoded_data)

    // php 请求参数 
    const request_body = {
        url : path,
        method : 'POST',
        header : 'Content-Type:application/x-www-form-urlencoded',
        body : {
            mode : 'urlencoded',
            urlencoded : urlencoded_data
        }
    }

    // 发送请求
    pm.sendRequest(request_body, function (err, res) {

        // 判断返回 code 是否一致
        var php_code = res.json().code
        pm.test("java 与 php 返回 code 是否一致", function () {
            pm.expect(java_data.code).to.eql(php_code)
        });

        // 判断返回 msg 是否一致
        if ('操作成功' != java_data.msg || null != res.json().msg ){
            pm.test("java 与 php 返回 msg 是否一致",function(){
            var php_msg = res.json().msg
            pm.expect(java_data.msg).to.eql(php_msg)
            });
        }

        console.log('java data : ', java_data, '   php data : ', res.json())

        var php_data = res.json()
        var php_list_key = []
        var php_list_value = []
        var php_list_data_value = []

        // code=200 --> key --> key_list
        if (php_data.code === 200){
            for (var php_key in php_data){
                php_list_key.push(php_key)
            }

            // key --> key_list
            for (var php_data_key in php_data.data){
                php_list_key.push(php_data_key)

                // =dict --> value_list   0 --> 0.00
                if (typeof php_data.data[php_data_key] == 'object'){
                    for (var php_data_value in php_data.data[php_data_key]){
                        php_list_key.push(php_data_value.toString())
                        php_list_data_value.push(returnFloat(php_data.data[php_data_key][php_data_value]))
                    }
                }
                // !=dict --> value_list
                else{
                    // console.log(java_data.data[java_data_key])
                    php_list_value.push(php_data.data[php_data_key])
                }

            }

            php_list_key = php_list_key.sort()
            php_list_data_value = php_list_data_value.sort()
            
            // console.log('php_key: ', php_list_key)
            // console.log('php_value: ', php_list_data_value)

            if (java_list_key.toString() == php_list_key.toString() && java_list_data_value.toString() == php_list_data_value.toString()){
                // console.log('java 与 php 返回 data 一致')
            }
            else if(java_list_key.toString() != php_list_key.toString()){
                // console.log('返回 key 不一致 : ', 'java data : ', java_data, '   php data : ', res.json())
                // console.log('返回 key != : ', getDiffer(java_list_key, php_list_key))
            }
            else if(java_list_data_value.toString() != php_list_data_value.toString()){
                // console.log('返回 value 不一致 : ', 'java data : ', java_data, '   php data : ', res.json())
                // console.log('以下 value不一致 : ', getDiffer(java_list_data_value, php_list_data_value))
            }
            else if(java_list_key.toString() != php_list_key.toString() && java_list_data_value.toString() != php_list_data_value.toString()){
                // console.log('返回 key value 均不一致 : ', 'java data : ', java_data, '   php data : ', res.json())
                // console.log('返回 value 不一致 : ', 'java value : ', java_list_data_value, 'php value : ', php_list_data_value)
                // console.log('返回 key != : ', getDiffer(java_list_key, php_list_key))
                // console.log('返回 value != : ', getDiffer(java_list_data_value, php_list_data_value))
            }

            // 判断返回 data 是否一致
            pm.test("java 与 php 返回 data 是否一致", function () {
                pm.expect(java_list_key).to.eql(php_list_key) && pm.expect(java_list_data_value).to.eql(php_list_data_value)
            })

    }});

}catch(error){
    console.error("ERROR —————— PHP 错误: " + error.name + ": " + error.message)
}

  

posted @ 2022-01-20 21:01  Echo丶Mikasa  阅读(72)  评论(0)    收藏  举报