邮递员测试总是通过,即使它失败了

Postman test is always passing even though it fails

虽然运行邮递员测试,测试用例似乎总是通过 下面提供了响应正文。我正在尝试在名称为 "Erin" 时获取 id 并验证 id 为 800。我编写的一小段代码位于编写的响应正文下方 below.FOr 出于某种原因测试总是 returns真的。如果出于某种原因如果 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);
      }
     }
  });

我觉得那个响应主体不太合适,我希望在对象中的 属性 键周围看到引号。

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

这应该可以帮到您:

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);
         }
    });
});

失败时的测试结果: