Теперь давайте приступим к автотестам. И прежде чем к ним приступить, я хотел бы сделать, чтобы в первом запросе 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
Видим, что все тесты прошли
На все последующие методы я предлагаю вам написать тесты самостоятельно, либо посмотреть видео выше, как это делаю я ) Ну как, не сложно писать автотесты? )
Малышев вещает | Обучение | YouTube | QA чат | Поддержать на Boosty




























