【问题标题】:POSTMAN - Test failure false to be truthyPOSTMAN - 测试失败假为真
【发布时间】:2019-01-25 05:26:06
【问题描述】:

作为初学者,我有几个问题。我正在使用 Get 请求,它将填充下面的 json。

https://reqres.in/api/users

{
    "total": 12,
    "total_pages": 4,
    "data": [{
        "id": 1,
        "first_name": "George",
        "last_name": "Bluth",
        "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg"
    }]
}

对于下面的 2 个测试,而第一个通过第二个测试失败并显示以下消息:

 AssertionError: expected false to be truthy

    //Verify Page number total is 12
    var jsonData = JSON.parse(responseBody);
    tests["Checking total page number-Manual"] = jsonData.total === 12;

    //verify is exists and is 1
    var jsonData = JSON.parse(responseBody);
    tests["Checking ID exists and is 1"] = jsonData.id === 1;

问题 1: 我发现的一个 github 帖子说可能有错误并建议使用 新的 pm.* 等价物。但是我看不出第一个和第二个有什么区别。那么为什么第二次测试失败了呢?

问题 2: 是否可以编写测试来验证 ID:1 的名字是 George?

提前感谢您的宝贵时间。

【问题讨论】:

  • id 属性位于 data 数组内的对象中。类似于jsonData.data[0].id。那是较旧的测试语法,我鼓励您摆脱它并开始使用pm.test() 语法。

标签: api testing postman


【解决方案1】:

您的第二次测试失败的原因是因为 data 是一个数组,在这种情况下您必须访问第一个元素。你会想做这样的事情(新语法):

pm.test("Verify id is equal to 1", function() {
    var jsonData = pm.response.json();
    pm.expect(jsonData.data[0].id).to.equal(1);
});

同样用于测试名字的是 George:

pm.test("Verify id is equal to 1", function() {
    var jsonData = pm.response.json();
    pm.expect(jsonData.data[0].first_name).to.equal("George");
});

如果您总是希望它只是数组中的单个元素,那么您可以安全地使用索引 0,即 data[0]。但是,如果您希望数据数组中有更多元素,那么您将不得不遍历它们以查找正确的元素。

这里有一个很好的 API 参考:

https://learning.getpostman.com/docs/postman/scripts/postman_sandbox_api_reference/

【讨论】:

  • 很好的解释和参考。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 2017-05-06
  • 2022-08-16
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
相关资源
最近更新 更多