3

在运行邮递员测试时,测试用例似乎总是通过下面提供的响应正文。我试图在名称为“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”并且只有在找到 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);
      }
     }
  });
4

1 回答 1

2

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

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

这应该可以帮助您:

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

邮差

失败时的测试结果:

在此处输入图像描述

于 2020-03-06T18:00:24.927 回答