Теперь давайте приступим к автотестам. И прежде чем к ним приступить, я хотел бы сделать, чтобы в первом запросе 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»:
- Указывает браузеру или другому клиенту, как правильно обработать информацию, полученную от сервера.
- Распространённые типы: «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
Видим, что все тесты прошли
На все последующие методы я предлагаю вам написать тесты самостоятельно, либо посмотреть видео выше, как это делаю я ) Ну как, не сложно писать автотесты? )