Модульный тест для поиска ключевого слова в массиве ответов

#unit-testing #postman #postman-testcase

Вопрос:

всем доброго дня, я здесь новенький,

У меня есть данные ответа, которые выглядят так

 [  {  "Outlet": "Outlet1",  "Inventory": 12  },  {  "Outlet": "Outlet2",  "Inventory": 0  },  {  "Outlet": "Outlet3",  "Inventory": 3  },  {  "Outlet": "Outlet4",  "Inventory": 0  } }  

Мне нужно проверить, является ли инвентаризация на выходе 1 точной 12, а все остальные данные, КРОМЕ инвентаризации на выходе 1, равны 0. нужно ли мне повторять тест?

Я уже пробовал:

 pm.test("Inventory.OnHand Outlet1 == 12", () =gt; {  let Outlet1Result = jsonData.find(a =gt; a.Outlet === "Outlet1")  pm.expect(Outlet1Result.Outlet).to.eql("Outlet1")  pm.expect(Outlet1Result.Inventory).to.eql(12) });   pm.test("Inventory.OnHand not Outlet1 == 0", () =gt; {  if (jsonData.Outlet !== "Outlet1") {  jsonData.forEach(function() {  let result2 = jsonData.find(a =gt; a.Outlet !== "Outlet1")  pm.expect(result2.Inventory).to.eql(0)  }) ;  }  });  

Я пробовал использовать этот тест 2, первый тест работал просто отлично, но я думаю, что второй тест ошибочен, потому что он пройден, его не следует проходить, так как в магазине 3 3, текст ожидает, что он будет 0

Ответ №1:

Другим способом было бы :

 pm.test("Validate inventory values", () =gt; {  jsonData.forEach(function (item) {  if (item.Outlet !== "Outlet1") {  pm.expect(item.Inventory,  `Expected inventory value of ${item.Outlet} to be 0`).  to.  eql(0)  } else {  pm.expect(item.Inventory,  `Expected inventory value of ${item.Outlet} to be 12`).  to.  eql(12)  }  }) });  

Комментарии:

1. это сработало как заклинание. Спасибо!

Ответ №2:

почему вы не можете просто сравнить объект таким, какой он есть, с отдельными полями ? как вы сравниваете точные значения.

 let expected = [  {  "Outlet": "Outlet1",  "Inventory": 12  },  {  "Outlet": "Outlet2",  "Inventory": 0  },  {  "Outlet": "Outlet3",  "Inventory": 3  },  {  "Outlet": "Outlet4",  "Inventory": 0  } ]  pm.expect(JSONdata).to.be.deep.eq(expected1, `Expected ${JSON.stringify(JSONdata,null,2)} to be equal to ${JSON.stringify(expected,null,2)}`)