Урок 10 — Написание и запуск tests в postman

Теперь давайте приступим к автотестам. И прежде чем к ним приступить, я хотел бы сделать, чтобы в первом запросе post-ом, мы бы создавали каждый раз новое животное, после выполнение запроса присваивали бы значение этого id этого животного в переменную pet_id и все последующие запросы проводились бы с этим pet_id. Таким образом каждые раз, когда мы будем запускать нашу коллекцию с автотестами, все запросы будут производиться с новым id.

Давайте это сделаем, для этого в первом нашем запросе, в котором мы создаем животное заменяем  id животного 444555, на {{$randomInt}}. Этой строчкой генерируется случайное число.

Далее на вкладке Tests первой строчкой мы запишем следующее: pm.collectionVariables.set(«pet_id», pm.response.json().id)

Эта строка кода устанавливает значение переменной коллекции pet_id равным значению id из JSON-ответа. Если переменной pet_id не существует, то она создаться. Давайте это проверим, зайдем в перменные нашей коллекции и убедимся, что там единственная переменная, это per_store

Теперь запишем, отправим наш запрос и видим что у нас сгенерировался  id 575 и вернулся в теле ответа

Теперь возвращаемся в переменные нашей коллекции и видим, что у нас создалась переменная pet_id и в нее записалось значение 575

Возвращаемся на вкладку Tests и посмотрим, что мы можем сделать. И здесь, не зная программирования мы можем воспользоваться готовыми снипетами и давайте кликнем на первый из них это проверка статус кода ответа.

У нас добавилась следующая строчка

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

  • pm.test — это функция Postman, которая используется для запуска тестового сценария.
  • "Status code is 200" — это текстовое описание, которое будет отображаться в Postman для данного теста.
  • function () { — это начало функции, которая содержит код для проверки.
  • pm.response — это объект, который содержит информацию о полученном от сервера ответе.
  • to.have — это метод, который используется для проверки различных аспектов ответа.
  • status(200) — это метод, который проверяет код ответа. В данном случае он проверяет, что код ответа равен 200, что означает «OK».

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

Теперь вернемся к нашим сниппетам и кликнем на следующий сниппет

В тестах отобразится следующий код

У нас в ответе от сервера всегда должен быть заголовок Content-Type. И этот код выше проверяет, присутствует ли заголовок «Content-Type» в ответе сервера. Если заголовок отсутствует, тест провалится.

Значение заголовка «Content-Type»:

  1. Указывает браузеру или другому клиенту, как правильно обработать информацию, полученную от сервера.
  2. Распространённые типы: «text/html» для веб-страниц, «application/json» для данных в формате JSON, «image/jpeg» для изображений JPEG и т.д.
  • pm.test — как и в предыдущем примере, эта функция запускает тестовый сценарий.
  • «Content-Type is present» — название теста, которое будет отображаться в Postman.
  • function () { — начало функции, содержащей код проверки.
  • pm.response — объект с информацией о полученном от сервера ответе.
  • to.have.header — метод, проверяющий наличие определенных заголовков в ответе.
  • «Content-Type» — искомый заголовок.

Вернемся к нашим сниппетам и кликнем на следующий сниппет.

И в появившемся коде давайте заменим 200 на 2000 мс

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

Давайте теперь попробуем, что-то сложнее и проверим, что тот id, который мы получаем в теле ответа равен переменной pet_id.

Снова идем в наши сниппеты, выбираем Response body: JSON value check

И давайте напишем следующий тест

Этот тест проверят, что id, который возвращается нам в ответе, равен id, который находится в pet_id.  Давайте нажмем на Send и выполним наш запрос и как мы видим запрос выполнен успешно и все 4 теста прошли

Переключимся на вкладку Tests Result и видим более детально наши тесты и также видим, что они все прошли:

Давайте вернемся в body и посмотрим какие параметры мы еще передавали, а это id категории 4444, имя животного Jack и название категории dogs

И эти параметры нам должны вернуться в ответе в виде json и давайте это проверим и напишем три теста, которые будут проверять, что нам вернулась id категории 4444, название категории dogs и имя животного Jack. Для этого давайте кликнем три раза на тот же снимет, который мы выбирали в прошлый раз Response body: JSON value check. И наши итоговые тесты будут следующими:

Давайте снова нажмем на send и отправим наш запрос и как мы видим все 7 тестов из 7 прошли успешно

Теперь в запросе в body давайте мы поменяем имя животного, мы будем передавать имя не Jack, а Barsik и снова отправим наш запрос

И как мы видим у нас один тест упал, в тесте как раз и пишется, что нам пришедший Barsik не равен Jack

Давайте попробуем покрыть тестами следующий метод, который добавляет фотографию и метаданные для нашего животного. И как мы видим в запросе мы прописываем id животного, у которого мы хотим сделать. Это path параметр. Но помните, что мы с вами хотим работать во всех запросах с id животным, который создавали в первом методе.

Вместо 444555 мы напишем :petId и смотрите что происходит, автоматом появляется path параметр с ключом petId

И теперь в значение ключа мы пишем {{pet_id}} , в которой будет наше значение от предыдущего запроса. Выполняем запрос

и видим, что нам вернулся 200 код ответа, с сообщением в котором содержится название нашего файла и мета информация,

которую мы передавали в body —> formData

И давайте напишем следующие тесты

Первые три теста, аналогичные, какие были для прошлого запроса, мы проверяем что запрос успешный, а это значит код ответа 200, что запрос выполняется не больше 2 секунд и что возвращается заголовок Content-Type. Следующие два теста:

  • Первый тест проверяет, что в ответе в значении message содержится текст avatar, это значение, которое мы передавали в additionalMetadata
  • Второй тест проверяет, что в ответе в значении message содержится текст logo.jpeg, это тот файл, который мы передавали в file.

Отправляем наш запрос и как мы видим все 5 тестов прошли

Теперь запустим всю коллекцию

Нажмем на View Results

Видим, что все тесты прошли

На все последующие методы я предлагаю вам написать тесты самостоятельно, либо посмотреть видео выше, как это делаю я ) Ну как, не сложно писать автотесты? )

Понравилась статья? Поделиться с друзьями: