#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)}`)