Алекс Смит: Тестирование ПО с Нуля до Специалиста
February 12

8.7 Составление тестов на проверку Статус-кода

На данном занятии научимся составлять тесты для проверки запросов.

Для начала создадим новую коллекцию с названием Tests. В данной коллекции будем создавать запросы и учиться их проверять с помощью тестов.

Создаем первый тест:

Для того, чтобы составить первый тест, нужно перейти во вкладку Tests:

Появилось поле, в котором можно либо напечатать тест, либо воспользоваться Снипетами (Snippets).

Что такое Снипеты (Snippets)?

Сниппеты (Snippets) - это фрагменты кода или шаблоны, которые можно применять для быстрого создания запросов и тестов.

Или же: Сниппеты - это уже готовые проверки, которые создали разработчики Postman для того, чтобы тестировать было проще. То есть это готовые сценарии.

Status code: Code is 200

В данной ситуации воспользуемся сниппетом, который называется 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 отдельных сообщения, можно объединить их в один тест.

3 разных теста
Один тест

Рассмотрим, как можно проверять статус-код по первой цифре

Проверка на 1ХХ

В тесте пишем pm.response.to.be.info, т.е. дословно ответ должен быть инфо. И вспоминаем, что статус-коды 100-199 - это информационные статус коды. Поэтому пришла ошибка.

Проверка на 2ХХ

Проверка на 3ХХ

Универсальный способ теста на ошибку (4ХХ и 5ХХ)

Error - универсальный метод в тесте, т.к. выдает, была ошибка или нет. Не важно, на чьей стороне (4ХХ - ошибка на стороне клиента, 5ХХ на стороне сервера). Просто факт того, что произошла ошибка.

Проверка на 4ХХ

Проверка на 5ХХ