Postman REST API:比较两个 XML 响应
Postman REST API: Compare two XML response
我正在尝试比较 2 个 REST API 的 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>
响应 2:
<d:country>AU</d:country>
<d:region>NSW</d:region>
我创建了一个包含 API 的集合,我想 运行 和 API 并比较可用的列(我不想比较完全)。
能否请您指导我完成的方法。
谢谢,
塞卡
enter image description here
据我所知,在不将 xml 转换为 json 的情况下,没有简单的方法来比较 xml 属性和元素的值。
下面是 2 个用例(测试)的工作示例(xml 转换为 json)
- 使用函数
difference()
,可以测试2个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);
});
我正在尝试比较 2 个 REST API 的 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>
响应 2:
<d:country>AU</d:country>
<d:region>NSW</d:region>
我创建了一个包含 API 的集合,我想 运行 和 API 并比较可用的列(我不想比较完全)。
能否请您指导我完成的方法。
谢谢, 塞卡
enter image description here
据我所知,在不将 xml 转换为 json 的情况下,没有简单的方法来比较 xml 属性和元素的值。
下面是 2 个用例(测试)的工作示例(xml 转换为 json)
- 使用函数
difference()
,可以测试2个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); });