PostMan测试脚本:检查响应JSON的内容

时间:2018-03-31 09:47:06

标签: javascript json postman postman-collection-runner

PostMan 6.0.10在这里。我正在努力理解如何更好地编写测试脚本,并且在阅读了它们之后superb documentation我仍然对如何查询&检查来自请求的JSON响应。

具体来说,给出以下JavaScript代码片段:

pm.test("Verify the contents of the response payload are correct", function () {
    // ???
});

我需要能够查询响应JSON和:

  • 确定响应是单个JSON对象还是JSON对象数组
  • 如果是数组,请确定大小(数组中元素数)
  • 否则,如果它是一个单独的对象,我需要能够查询该对象的特定字段(比如,一个名为“fizzbuzz”的字段)并获取值和JSON类型(字符串,数字,布尔, null)这些字段

场景#1:JSON响应是一个数组

示例:

[
    {
        "fizz": "buzz",
        "foo": 53
    },
    {
        "fizz": "bozz",
        "foo": 291
    }
]

场景#2:JSON响应是单个对象

示例:

{
    "fizz": "buzz",
    "foo": 293
}

有关如何执行此JSON检查响应有效负载的任何想法

2 个答案:

答案 0 :(得分:4)

这是基本的,但应该有助于获得动态:

pm.test("Verify payload of example one",  () => {
    pm.expect(pm.response.json()[0].fizz).to.equal('buzz')
    pm.expect(pm.response.json()[0].foo).to.equal(53)
    pm.expect(pm.response.json()[1].fizz).to.equal('bozz')
    pm.expect(pm.response.json()[1].foo).to.equal(291)
});

pm.test("Verify payload of example two",  () => {
    pm.expect(pm.response.json().fizz).to.equal('buzz')
    pm.expect(pm.response.json().foo).to.equal(293)
});

可能值得研究一些基本的JavaScript以及如何解析JSON objects

答案 1 :(得分:-1)

//您可以执行以下操作

 if (responseCode.code === 200) {
  var jsonDataArray;
  var jsonArray= JSON.parse(responseBody);
 var found=false;

       for (var i = 0;i<jsonArray.length;i++){`enter code here`

     jsonDataArray = jsonArray[i];
     for (var j = 0; j<jsonDataArray.length && found === false;j++){
         if (jsonDataArray[j].fizz === "buzz" && jsonDataArray[j].foo === 53)