【问题标题】:Postman BDD testing array of object REST APIPostman BDD 测试对象 REST API 数组
【发布时间】:2018-10-02 05:58:18
【问题描述】:

我正在使用 Postman BDD / Chai 编写测试,但在测试数组响应时遇到了问题。

所以我的 API 返回的内容类似于

[
        {
            "id": 1,
            "firstName": "x",
            "lastName": "y",
            "dateOfBirth": "2018-04-21",
            "username": "user"
        },
        {
            "id": 2,
            "firstName": "x",
            "lastName": "y",
            "dateOfBirth": "2018-04-21",
            "username": "admin"
        } 
]

如何检查响应是否包含某些成员?

expect(response).to.have.property('id');

似乎不起作用,因为响应是一个数组。更改对 response[0] 的响应似乎也没有任何改变。

建议?

【问题讨论】:

  • 你只是想确保你所有的响应对象都有id ?
  • @GeorgeBailey 不,我想检查更多成员,但这只是一个例子。主要问题是如何访问数组中的对象。
  • 循环遍历它。 .map
  • @GeorgeBailey 这会得到 Postman BDD 的支持吗?
  • 您需要遍历数据以断言不同的属性在数组中。您是否有理由使用 Postman BDD 而不是具有所有 pm.* 功能的较新的内置测试功能?

标签: javascript postman chai


【解决方案1】:

您可以在Tests 选项卡中添加类似的内容,而无需使用 Postman BDD 库。我在这里使用过 Lodash,但您可以使用 for loop 对原生 JS 做同样的事情:

pm.test('Response has the ID property', () => {
    _.each(pm.response.json(), (arrItem) => {
        console.log(arrItem)
        pm.expect(arrItem).to.have.property('id')
    })
})

您可以扩展它以检查整个对象的特定元素 - 在测试中添加另一行,例如 pm.expect(arrItem).to.have.property('firstName')

如果您使用的是PostmanBDD 库,您可以添加一个for 循环来检查id 属性:

eval(globals.postmanBDD)

describe('Get id data', () => {
  it('should check the id property is present', () => {
      for(i=0; i < response.body.length; i++) {
          console.log(response.body[i])
          response.body[i].should.have.property('id')
      }
  })
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 2017-08-10
    • 2019-05-18
    • 2021-05-14
    • 2017-10-25
    • 2021-04-06
    相关资源
    最近更新 更多