8.7 Составление тестов на проверку Статус-кода
На данном занятии научимся составлять тесты для проверки запросов.
Для начала создадим новую коллекцию с названием Tests. В данной коллекции будем создавать запросы и учиться их проверять с помощью тестов.
Создаем первый тест:
Для того, чтобы составить первый тест, нужно перейти во вкладку Tests:
Появилось поле, в котором можно либо напечатать тест, либо воспользоваться Снипетами (Snippets).
Что такое Снипеты (Snippets)?
Сниппеты (Snippets) - это фрагменты кода или шаблоны, которые можно применять для быстрого создания запросов и тестов.
Или же: Сниппеты - это уже готовые проверки, которые создали разработчики Postman для того, чтобы тестировать было проще. То есть это готовые сценарии.
Status code: Code is 200
В данной ситуации воспользуемся сниппетом, который называется Status code: Code is 200.
pm.test("Status code is 200", function () { pm.response.to.have.status(200); });
pm.
- обращаемся к объекту Postman, т.е. говорим Postman что мы будем обращаться именно к нему, в пределах программы. Это обязательное правило, с которого должен начинаться тест.test
- кодовое слово, которое говорит системе, что сейчас будем писать тест. Т.е. тем самым говорим Postman, что дальше идет тест."Status code is 200"
- название проверки. Тестировать можно на любой статус код, поэтому важно писать тут корректное название.function ()
- обозначаем, что дальше идет функция, которая будет проводить проверку на статус-код. Так как функция не включает в себя никакие обязательные параметры [()
], то в скобках пусто.{pm.response.to.have.status(200);}
- все, что записано в фигурных скобках - это и есть проверка. То есть можно составить несколько проверок в одном тесте.
Проверка состоит из:pm.
- обращаемся к Postman.response
- ответ запроса. То есть по факту, мы просто обращаемся к ответу запроса.to.have.status(200)
- указываем, что ответ должен содержать статус 200
После каждой проверки ставим точку с запятой: pm.response.to.have.status(200);. Так же как и в конце теста.
После запуска появляется результат в окне:
Появился Test Results(1/1). Это значит, что один успешный тест из одного (то есть первое число 1 - это количество успешных тестов, а /1 - столько было всего тестов написано).
В данном случае провели проверку на позитивное тестирование, т.к. проводили на статус код 200. Мы отправили корректный запрос и ожидали, что получим положительный результат.
Негативное тестирование
В том же запросе добавим на статус код 400
Проверка на статус код 400 | AssertionError: expected response to have status code 400 but got 200
- получили название проверки (Проверка на статус код 400)
, а так же получили предупреждение, в котором система подробно описывает, а в чем именно была ошибка. Она говорит, что мы ожидали статус код 400, но получили статус код 200(AssertionError: expected response to have status code 400 but got 200).
Тестирование запросов
Во время тестирования запросов, для каждого запроса нужно произвести как позитивное, так и негативное тестирование.
Для позитивного теста по запросу нужно отправить корректный запрос и тест на код 200.
Данный тест является позитивным, т.к. отправляем корректный запрос и делаем корректную проверку.
Но так же нужно сделать негативное тестирование.
Несмотря на то, что была ошибка 404, тест прошел успешно потому что мы реально получили 404 как и ожидали. То есть был сделан некорректный запрос, ожидали от этого запроса ошибку 404 и ее получили.
Status Cod: Successful POST request
Слово POST в названии теста смущать не должно т.к. с помощью данного теста можно проверять как POST, так и GET, PUT, DELETE и тд.
Status Cod: Successful POST request - с помощью данной проверки можно проверять сразу несколько статус-кодов. То есть можно указать системе, какие статус-коды будут устраивать. В примере на картинке выше нас устроит как 201, так и 202 статус-код.
Пишем проверки на статус-сообщения ответа
Когда пишем запрос, в ответе, помимо статус-кода приходит еще и статус-сообщение. У каждого запроса он может быть разный, в зависимости от того, как его заложит разработчик.
Что необходимо для того, чтобы можно было проверить статус сообщения?
Будем использовать сниппет "Status code: Code name has string".
А теперь проверим, что проверка отрабатывает так, как нужно с помощью негативного теста.
Чтобы не получать 3 отдельных сообщения, можно объединить их в один тест.
Рассмотрим, как можно проверять статус-код по первой цифре
Проверка на 1ХХ
В тесте пишем pm.response.to.be.info, т.е. дословно ответ должен быть инфо. И вспоминаем, что статус-коды 100-199 - это информационные статус коды. Поэтому пришла ошибка.
Проверка на 2ХХ
Проверка на 3ХХ
Универсальный способ теста на ошибку (4ХХ и 5ХХ)
Error - универсальный метод в тесте, т.к. выдает, была ошибка или нет. Не важно, на чьей стороне (4ХХ - ошибка на стороне клиента, 5ХХ на стороне сервера). Просто факт того, что произошла ошибка.