Як і обіцяв, сьогодні трошки про ту тему, яка чомусь часто пролітає мимо, скрипти в Postman Pre-request і Tests.
Але як казав один мудрий QA, якщо у тебе ріквести йдуть у флоу, не використовувати параметризацію це просто злочин. І я повністю згоден.
Я знаю, ніхто не любить скрипти в Postman'і, бо все ж працює.
Але давайте чесно, ти або тикнеш 50000000 разів руками, або один раз напишеш нормально, і потім живеш.
Так от що це таке страшне ці Pre-request + Test scripts, це прям твій внутрішній автотестер у Postman.
Вони юзаються для того, щоб передати id, token, username між запитами, згенерити унікальні значення типу емейлу, логіна, дати, одразу провалідити респонс і зберегти щось в env
ну і що головне, працювати з Postman як з легенькою автоматизацією, не тільки ручками тикати.
так ну что я написав вам стандартні і те шо юзаю за часту і показую на уроках для своїх учнів)
1. Pre-request script і готуємо дані до запиту
Унікальний логін
const rnd = Math.floor(Math.random() * 10000);
pm.environment.set("test_login", test_user_${rnd});
це щоб створити унікальний логін користувача на кожен запуск, і не ловити помилку (користувач вже існує.
Зручно при тесті реєстрації, створення акаунтів, унікальних назв.
2. Валідний email
const email = user_${Date.now()}@example.com;
pm.environment.set("test_email", email);а ценерує email, який точно буде унікальний, з міткою часу.
Корисно при реєстрації, коли система не дозволяє дублі.
3. Дата створення та завершення
const now = new Date();
const plus10 = new Date(now);
plus10.setDate(now.getDate() + 10);
const nowISO = new Date(now.getTime() - now.getTimezoneOffset() * 60000).toISOString();
const plus10ISO = new Date(plus10.getTime() - plus10.getTimezoneOffset() * 60000).toISOString();
pm.environment.set("created_at", nowISO);
pm.environment.set("expired_at", plus10ISO);
це тут ставить дату зараз + через 10 днів у правильному ISO-форматі (з урахуванням таймзони).
Супер для створення сесій, подій, об’єктів з датами дії.
Це вже ми про Test Script
4. Перевірка статусу + збереження ID та токена
pm.test("Status 201 — Created", function () {
pm.response.to.have.status(201);
});
const res = pm.response.json();
pm.environment.set("user_id", res.data.id);
pm.environment.set("access_token", res.data.token);Перевіряємо, що об’єкт створено (201) чи можемо на любий статус код і зберігаємо id + token, щоб далі юзати їх в наступних запитах без копіпасту, тобто налаштував собі env всі данні в зміні автоматично записалися і в наступному запиті полетіли)
Це ключова зв’язка для побудови флоу із декількох запитів.
5. Валідація структури відповіді
pm.test("Поле name — рядок", function () {
const data = pm.response.json().data;
pm.expect(data.name).to.be.a("string");
});а це щоб одразу перевірити, чи в полі name реально приходить рядок, а не null, object, або взагалі undefined.
Добре ловить непомітні проблеми типу бекенд вернув щось не те, але ти не помітив.
Мій поінт такий, якщо в тебе є більше ніж 1 запит і між ними летять якісь змінні - скрипти, твої друзі.
Це не автоматизація в класичному сенсі, але це QA-професіоналізм, якому не треба соромитись.
А хто ще не пробував, спробуйте, це реально спрощує і покращує вашу щоденну роботу.
Сподіваюсь коротко вийшло але зрозуміло
якщо вам є шо додати то пишіть які ви юзаєте скрипти і навіщо, буде цікаво не тільки мені)
Якщо пост зайшов і був корисний, ставь серденько)
Зберу фідбек і знайду час напишу для вас окремий ше пост де розповім про
setNextRequest як будувати динамічні флоу ну і pm.iterationData щоб робити data-driven тести
Гарного вам дня і вечора) 🤗🤗🤗