我有一个输入 json 文件,如下所示:
{
"interfaceIndex": "1234",
"portName": "1/2/3",
"portType": "LAN",
"adminStatus": "up",
"operStatus": "down",
"managementPort": "No",
"primaryRack": "1",
"primarySlot": "8",
"primaryPort": "5",
"secondaryRack": "",
"secondarySlot": "",
"secondaryPort": "",
"protectionMode": "",
"sfpDescription": "test",
"speed": "0",
"neType": "test1",
"oldAdminStatus": "",
"portDisplayName": "LAN 1/2/3",
"deviceVariant": "test11"
}
下面是通过postman的请求体
{
"neName": "{{neName}}",
"primarySlot": "2",
"primaryPort": "3"
}
回应:
{
"interfaceIndex": "1234",
"neName": "BA12",
"neIp": "1.1.1.1",
"context": "",
"portName": "1/2/3",
"portType": "LAN",
"adminStatus": "up",
"operStatus": "",
"managementPort": "No",
"primaryRack": "1",
"primarySlot": "2",
"primaryPort": "3",
"secondaryRack": "",
"secondarySlot": "",
"secondaryPort": "",
"protectionMode": "",
"sfpDescription": "",
"speed": "0",
"neType": "test1",
"oldAdminStatus": "",
"portDisplayName": "LAN 1/2/3",
"deviceVariant": "test11"
}
我想使用 input.json 验证 API 响应数据。到目前为止我已经做了类似的事情:
pm.test("Validate interfaceIndex", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.interfaceIndex).to.eql(data['interfaceIndex']);
});
pm.test("Validate neName", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.neName).to.eql(pm.environment.get("neName2"));
});
pm.test("Validate neIp", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.neIp).to.eql(pm.environment.get("neIp"))
});
.....
但是如果没有对测试中的密钥进行硬编码,我想循环遍历响应数据中的每个项目并希望与 input.json 匹配。
比较循环:循环使用
inputJson
迭代 Object.entries(inputJson)
对象中的每个键值对。
从 API 收到的响应与
inputJson
中指定的预期结构和值相匹配。如果所有属性及其值匹配,则测试通过。如果存在任何差异,则测试失败,表明响应结构或值不符合预期。
这个
tests
代码可以验证您的数据
const inputJson = {
"interfaceIndex": "1234",
"portName": "1/2/3",
"portType": "LAN",
"adminStatus": "up",
"operStatus": "down",
"managementPort": "No",
"primaryRack": "1",
"primarySlot": "8",
"primaryPort": "5",
"secondaryRack": "",
"secondarySlot": "",
"secondaryPort": "",
"protectionMode": "",
"sfpDescription": "test",
"speed": "0",
"neType": "test1",
"oldAdminStatus": "",
"portDisplayName": "LAN 1/2/3",
"deviceVariant": "test11"
}
const outputJson = pm.response.json();
for (const [inputKey, inputValue] of Object.entries(inputJson)) {
console.log("input \"" + inputKey + "\" : \"" + inputValue + "\" ==> \"" + outputJson[inputKey]);
pm.expect(outputJson[inputKey]).to.eql(inputJson[inputKey]);
}