POSTMAN - как проверить тело ответа на значение › 0

Я новичок в почтальоне и изо всех сил пытаюсь найти ответ на приведенный ниже вопрос.

У меня есть запрос, который возвращает данные, подобные приведенным ниже:

{
   "dailyProcessing":{
      "2020-10-01":{
         "Database":{
            "list0":0,
            "list1":0,
            "list2":300,
            "list3":0,
            "list4":0
         }
      },
      "2020-10-02":{
         "Database":{
            "list0":0,
            "list1":0,
            "list2":0,
            "list3":0,
            "list4":400
         }
      }
   }
}

Мне нужно написать тест, который проверяет, что одно из этих значений возвращает число ›0, и я не уверен, какой формат должен быть.

Используемый список будет случайным, поэтому он не может быть привязан к одному списку, но он всегда будет использоваться, и нам нужно отметить, если мы не видим значение больше 0 в ответе, так как это идентифицирует проблему с обработкой

У меня есть небольшое количество знаний, поэтому я пытался собрать вещи, например

pm.expect(pm.response.text()).to.include

но я, кажется, не получаю результат, который мне нужен

Извиняюсь, если это действительно простая вещь, у меня еще нет знаний, чтобы знать, что именно (то есть терминология), которую я пытаюсь сделать.

заранее спасибо


person KDSP    schedule 08.10.2020    source источник


Ответы (1)


Надеюсь, этот код поможет вам, поместите его на вкладку «Тест».

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

Он будет делать это для всех доступных элементов, пока не будет выполнено условие, при котором значение элемента списка равно › 0.

Как только условие выполнено, оно выйдет из обоих циклов, а затем подтвердит, что выполненное условие истинно.

Если все значения равны 0 и цикл завершится, то условие не будет выполнено, и проверка завершится неудачно.

var dailyProcessing = JSON.parse(responseBody);
var conditionMet = false;

for (var key in dailyProcessing)
{
    console.log(Object.keys(dailyProcessing).length)
    console.log(key)

    for(var item in dailyProcessing[key].Database)
    {
        if(dailyProcessing[key].Database[item] > 0){
            conditionMet = true;
            break;
        }
    }

    if(conditionMet){
        break;
    }
}

pm.test("Condition is met", function() {
    pm.expect(conditionMet).to.be.true;
});
person Dave Morrison    schedule 08.10.2020
comment
Это очень полезно. Спасибо и за это, и за объяснение - person KDSP; 09.10.2020
comment
Круто спасибо за реп! Вы можете делать классные вещи с почтальоном, это всего лишь javascript. например, я создал динамические почтовые тесты для массива элементов, которые вернулись в теле ответа, в котором утверждалось, что значение свойства было установлено на что-то, просто создав цикл foreach, который запускает pm.test для элемента итерации. я люблю это - person Dave Morrison; 09.10.2020