【问题标题】:How to find the number of nodes returned in an API response using postman?如何使用邮递员查找 API 响应中返回的节点数?
【发布时间】:2018-06-30 19:06:13
【问题描述】:

假设以下是 API 响应:

{
    "content": 
    [
        {
            "id": 90008,
            "capacity": 2,
            "manufacturer": "NISSAN",
            "model": "Sunny",
            "comment": "Nice Compact car.",
            "features": {
                "high_grade": false,
                "normal_grade": true
            },
            "images": [
                {
                    "type": "OUTSIDE",
                    "url": "http://some-image-1.jpg"
                },
                {
                    "type": "INSIDE",
                    "url": "http://some-image-2.jpg"
                }
            ],
            "links": []
        },
        {
            "id": 90009,
            "capacity": 7,
            "manufacturer": "Audi",
            "model": "Q7",
            "comment": "Very good leg space!",
            "features": {
                "high_grade": true,
                "normal_grade": false
            },
            "images": [
                {
                    "type": "OUTSIDE",
                    "url": "http://some-image-1.jpg"
                },
                {
                    "type": "INSIDE",
                    "url": "http://some-image-2.jpg"
                }
            ],
            "links": []
        }
    ],
    "page": {
        "size": 20,
        "total_elements": 2,
        "total_pages": 1,
        "number": 0
    }
}

现在在邮递员中,我将如何发现内容中返回的父/主节点总数为 8,如下所示:

  1. 身份证
  2. 容量
  3. 制造商
  4. 型号
  5. 评论
  6. 功能
  7. 图片
  8. 链接

我尝试了以下方法,但失败了:

pm.test("Check total no. of nodes in all content is 8", () => {
    for (i = 0; i < jsonData.content.length; i++) { 
        pm.expect(Object.keys(jsonData.content[i]).length).to.equal(8);
    }
});

【问题讨论】:

  • 对象的长度重要吗?如果属性的值发生更改,它将更改数据的配置文件,因此您可以返回 8 个不同的内容,并且测试仍然可以通过。您是否还确定它不是 0 索引 - 如果是这样,它将是 7 而不是 8。
  • 是的 - 现在,对我来说,对象的长度很重要。我也在检查每个返回的节点名称及其值。是的 - 可以忽略 0 个索引节点,例如链接。
  • 添加了一个答案 - 这对你有用吗?
  • 这可能是题外话。但是你是怎么得到这个回复的?我试过 /entity/node?format_json 但没有运气

标签: javascript testing automated-tests postman functional-testing


【解决方案1】:

您的代码丢失了:

var jsonData = pm.response.json()

测试在运行时会告诉您哪些内容并给您Check total no. of nodes in all content is 8 | ReferenceError: jsonData is not defined 消息。

所以它应该看起来像这样:

pm.test("Check total no. of nodes in all content is 8", () => {
    var jsonData = pm.response.json()
    for (i = 0; i < jsonData.content.length; i++) { 
        console.log(Object.keys(jsonData.content[i]))
        pm.expect(Object.keys(jsonData.content[i]).length).to.equal(8);
    }
});

您提到了The 0 indexed nodes, such as links, can be ignored,但是您进行测试的方式以及您正在检查的内容无论如何都会包括它们。它们也是您附加到问题的列表的一部分。

我在 Postman 控制台中添加了 console.log(Object.keys(jsonData.content[i])) 行以向您展示这一点。

【讨论】:

  • 再次感谢丹尼!它终于完美地工作了。不过,对于延迟回复,我深表歉意。
  • 不客气。如果您满意,请接受答案并关闭问题。
猜你喜欢
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 2020-11-29
  • 2020-09-12
  • 2021-03-10
  • 2018-01-30
  • 1970-01-01
相关资源
最近更新 更多