среда, 22 мая 2024 г.

Обновление интерфейса в Postman, где теперь автотесты

Есть у меня видео на канале — Пишем первый автотест в Postman. Само видео и код автотеста остались верными, а вот интерфейс изменился. Посмотрим, как именно.


Было

Были 2 отдельные вкладки:

  • Pre-request scripts — то, что выполняется ДО запроса
  • Tests — то, что выполняется после получения ответа



Стало

Одна вкладка «Скрипты» (Scripts), в которой уже 2 дочерние вкладки:
  • Pre-request — до запроса
  • Post-response — после получения ответа, аналог старой «Tests»


В целом, так даже логичнее, так как обе эти вкладки — действительно скрипты, которые выполняются или до запроса, или после получения ответа. Вот их и объединили.

Но это ещё не всё!

Разработчики сделали Postbot-а, который помогает вам в написании тестов. Чтобы его вызвать, надо нажать на значок головы космонавта в правом верхнем углу тестов (Scripts → Post-response). Вызывается контекстное меню, где можно попросить бота добавить тестов в этот запрос:



Мне бот добавил такие стандартные тесты-заглушки:

pm.test("Response status code is 200", function () {
    pm.expect(pm.response.code).to.equal(200);
});


pm.test("Response time is within an acceptable range", function () {
  pm.expect(pm.response.responseTime).to.be.below(1000);
});

В связи с чем может возникнуть пара вопросиков...



Код в видео другой — он неактуален?

В видео мы написали автотест немного по другому:

pm.test("Status code is 200", function () {
  pm.response.to.have.status(200);
});

Он актуален! Более того, в снипеттах, если тыкнуть на «Status code is 200», создастся именно такой тест. Они проверяют одно и то же по сути своей, но написаны по разному.

Можно проверить, что они валидны. Проверим на запросе для системы Users:

Тип метода — POST
URL — http://users.bugred.ru/tasks/rest/doregister 
Body в json:

{
    "name": "aaa@mail.com",
    "email": "test_video_15@mail.com",
    "password": "1"
}

Скрипты:

pm.test("Response status code is 200", function () {
    pm.expect(pm.response.code).to.equal(200);
});

pm.test("Status code is 200", function () {
  pm.response.to.have.status(200);
});

Запускаем запрос — тесты прошли успешно!


Ну а заодно предлагают посмотреть шаблоны тестов (View Templates), которые есть в постмане.

Так что неважно, как именно вы записываете проверку — через статус-код или код в response, тест пройдет успешно. 

Хотя не удивлюсь, если в будущем выкатят обновление, чтобы эти 2 теста были одинаковые, а то может запутать, почему бот предлагает одно, а сниппеты другое... На первый взгляд кажется ошибкой и чем-то устаревшим в одном из мест, но не переживайте, обе записи нормальны!


Раз есть бот — курс теперь неактуален?

У меня есть курс «Автоматизация тестов для REST API при помощи Postman». И что, он теперь неактуален, так как тесты за нас генерит бот?

Нет, курс остается актуален. Ведь в нем я учу понимать, что именно написано. Чтобы вы могли писать тесты с нуля, а также читать чужой код и в том числе код бота. 

И там как раз мы рассматриваем разные варианты написания одного и того же теста, просто с помощью разных инструментов. Ведь в node.js свои варианты, в chai.js свои, зашитые в постман свои =))

Мой знакомый ко мне начинающих автоматизаторов отправляет, говорит, что после моего курса проще воспринимается курс Баранцева или QA Guru, по "чистой" автоматизации. Так как я разжевываю базовые вещи языка, которые хоть и отличаются от языка к языку, но и общее что-то имеется.

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


Что ещё новенького

Появился функционал пакетов, они сейчас над сниппетами висят. Описано интересно — пакеты нужны, чтобы переиспользовать часто используемые скрипты. 

Правда, сначала я думала, что это только для команд (а это платный режим постмана), но в статье написано «reuse them in your personal, private, and team workspaces». Так что для себя тоже можно создавать пакеты и переиспользовать код.

Можно посмотреть библиотеку пакетов, кнопка тут:


И там как раз идет описание, как скрипты вызывать:


Давайте я переведу:

1. Создать пакет с кодом, который хотим переиспользовать:

function add(a, b) {
   return a + b;
};

2. Экспортировать функции, которые хотим переиспользовать, в коде:

module.exports = {add};

3. Использовать pm.require для использования этого пакета в запросе, папке или коллекции:

const myScript = pm.require(“package”);
myScript.add();

Выглядит интересно! 

Теперь и в постмане можно проводить рефакторинг и не копипастить одинаковые проверки из кода в код. Это круто) 

Но, чтобы начать рефакторинг, нужно сначала написать пачку автотестов и увидеть часто используемые функции. А вот если у вас уже есть реальные автотесты, обязательно присмотритесь к этому функционалу!

PS — статья написана в помощь студентам моих курсов.

Комментариев нет:

Отправить комментарий