Postman REST API:比较两个XML响应

Postman REST API:比较两个XML响应,postman,postman-collection-runner,Postman,Postman Collection Runner,我试图比较两个RESTAPI的XML响应。我想比较一下Response1和Response2中的几个字段 答复1: <d:site_name>Bondi Junction</d:site_name> <d:country>AU</d:country> <d:regio>NSW</d:regio> <d:contact>123456789</d:contact> Bondi结 金 新南威尔士州 123

我试图比较两个RESTAPI的XML响应。我想比较一下Response1和Response2中的几个字段

答复1:

<d:site_name>Bondi Junction</d:site_name>
<d:country>AU</d:country>
<d:regio>NSW</d:regio>
<d:contact>123456789</d:contact>
Bondi结
金
新南威尔士州
123456789
答复2:

<d:country>AU</d:country>
<d:region>NSW</d:region>
AU
新南威尔士州
我已经创建了一个集合,其中包含两个API,我想运行这两个API并比较可用列(我不想完全比较)

你能给我介绍一下做这件事的方法吗

谢谢, 塞卡尔


据我所知,如果不将xml转换为json,就很难比较xml属性和元素的值

下面是2个用例(测试)的工作示例(xml转换为json)

  • 使用函数
    difference()
    ,可以测试这两个XML是否有任何差异
  • 使用json路径提取xml元素的值,还可以比较特定字段值

    function difference(object, base) {
        function changes(object, base) {
            return _.transform(object, function(result, value, key) {
                if (!_.isEqual(value, base[key])) {
                    result[key] = (_.isObject(value) && _.isObject(base[key])) ? changes(value, base[key]) : value;
                }
            });
        }
        return changes(object, base);
    }
    
    
    var xml1 = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>
               <envelope>
                <body>
                    <d:site_name>Bondi Junction</d:site_name>
                    <d:country>AU</d:country>
                    <d:regio>NSW</d:regio>
                    <d:contact>123456789</d:contact>
                </body>
               </envelope>
    `;
    var xml2 = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>
                <envelope>
                 <body>
                    <d:country>AU</d:country>
                    <d:region>NSW</d:region>
                 </body>
               </envelope>
    `;
    
    var jsonObject1 = xml2Json(xml1);
    var jsonObject2 = xml2Json(xml2);
    var diff = difference(jsonObject1, jsonObject2);
    
    console.log(diff);
    
    pm.test("Test for any differences in the 2 payloads", function() {
        //diff object will be empty in case of no differences
        pm.expect(_.isEmpty(diff)).to.eql(true);
    
    });
    
    
    pm.test("Test for the value of country in 2 payloads ", function() {
        pm.expect(jsonObject1.envelope.body.country).to.eql(jsonObject2.envelope.body.country);
    });
    
    功能差异(对象、基础){
    功能更改(对象、基础){
    返回转换(对象、函数(结果、值、键){
    if(!\ isEqual(值,基[键]){
    结果[key]=(u.isObject(value)和&u.isObject(base[key])?更改(value,base[key]):value;
    }
    });
    }
    返回更改(对象、基础);
    }
    变量xml1=`
    邦迪结
    金
    新南威尔士州
    123456789
    `;
    变量xml2=`
    金
    新南威尔士州
    `;
    var jsonObject1=xml2Json(xml1);
    var jsonObject2=xml2Json(xml2);
    var diff=差异(jsonObject1,jsonObject2);
    控制台日志(diff);
    pm.test(“测试2个有效负载中的任何差异”,函数(){
    //如果没有差异,diff对象将为空
    pm.expect(u.isEmpty(diff)).to.eql(true);
    });
    pm.test(“测试2个有效载荷中的国家值”,函数(){
    expect(jsonObject1.envelope.body.country).to.eql(jsonObject2.envelope.body.country);
    });
    
  • 试试这个python库。但它目前正在开发中。这是一个关于你问题的问题。