【问题标题】:Postman test is always passing even though it fails即使失败,邮递员测试也始终通过
【发布时间】:2020-06-19 11:44:02
【问题描述】:

在运行邮递员测试时,测试用例似乎总是通过 下面提供了响应正文。我试图在名称为“Erin”时获取 id 并验证 id 是否为 800。我编写的一小段代码位于下面写的响应正文下方。出于某种原因,测试总是返回 true。如果由于某种原因,如果 Erin 和 800 不存在,它仍然通过了测试。

[
 {
  "id":991,
  "name":"Tomy"
 },
 {
  "id":800,
  "name":"Erin"
 }
]
Code:
pm.test("Validate id to be 800", function() {
   var jsonData = pm.response.json();
   for(int i=0; i<responseJson.length;i++){ 
      if(jsonData[i].name=='Erin'){
         pm.expect(jsonData[i].id).to.eql(800);
      }
     }
});

在下面稍微更新了响应,我希望我的测试失败,因为“Jack”是 没有找到,只有找到杰克才能通过

pm.test("Validate id to be 800", function () {
  let jsonData = pm.response.json();
  for(i=0; i < jsonData.length; i++) { 
     if(jsonData[i].name == 'Jack') {
        pm.expect(jsonData[i].id).to.eql(800);
      }
     }
  });

【问题讨论】:

    标签: postman postman-collection-runner postman-testcase


    【解决方案1】:

    该响应正文对我来说看起来不太正确,我希望在对象中的属性键周围看到引号。

    另外,您的引用命名不正确,这将通过测试,因为它不会导致脚本中的任何引用错误。

    这应该可以帮助你:

    pm.test("Validate id to be 800", function () {
       let jsonData = pm.response.json();
    
       for(i=0; i < jsonData.length; i++) { 
          if(jsonData[i].name === 'Erin') {
            pm.expect(jsonData[i].id).to.eql(800);
          }
        }
    });
    

    你可以把测试代码改写成这样:

    pm.test("Validate id to be 800", () => {
        let jsonData = pm.response.json();
    
        jsonData.forEach(item => {
            if(item.name === 'Erin') {
                pm.expect(item.id).to.eql(800);
             }
        });
    });
    

    以及失败时的测试结果:

    【讨论】:

    • 是的,确实没有引号,我已经添加了它们。但是您给我的脚本仍然存在相同的问题,即使 id 不等于 Erin 或不等于 800 也可以通过。如果可以,请帮助我。
    • 我使用您的示例响应在本地运行它,甚至更改了值以强制断言出现错误。一定有其他事情发生。你用了我的整个剧本吗?您能否在原始问题中添加一张图片,以便我查看实际发生的情况。
    • 是的,我尝试了您发布的相同脚本。如果稍微调整一下,它仍然会通过我希望它失败的地方 pm.test("Validate id to be 800", function () { let jsonData = pm.response.json(); for(i=0 ; i
    • 您可以尝试将其更改为pm.response.json()[0]吗?
    • 您需要做一些事情,期望 Erin 在那里,而 Erin 的 ID 正是您想要的。如果 Erin 不在那里,它将失败,如果 Erin 在那里并且 ID 错误,它将失败。只有在 Erin 在场且 ID 正确的情况下才会过去
    猜你喜欢
    • 2020-12-31
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2016-06-23
    • 2020-07-07
    • 2018-07-29
    相关资源
    最近更新 更多