Як і обіцяв, сьогодні розповім про ті штуки, які виглядають страшно, але на ділі, просто must have, якщо хочеш бути не просто тикальщиком у Postman, а QA з повагою до свого часу )
Ну ось коротенько вам про postman.setNextRequest() це коли треба динамічний флоу
Ідея яка, умовно ти хочеш в залежності від відповіді переходити до іншого запиту. Це як if/else в коді, тільки в Postman.
if (pm.response.code === 401) {
postman.setNextRequest("Auth Request");
} else {
postman.setNextRequest("Main Flow Step 2");
}Як це працює, після поточного запиту Postman автоматично викликає вказаний. Можна реалізовувати умовну логіку, якщо токен не валідний, авторизуйся, якщо все ок, йди далі.
І так працює тільки в Runner, не в одиночному запуску, але я може шось не знаю і вже змінилось це)
pm.iterationData, це для Data-Driven тестування
Умовно у вас є колекція запитів, і треба запускати їх з різними наборами даних (логіни, email-и, конфігурації).
Робиш CSV або JSON з даними (типу users.csv)
login,email,password
qa_user1,user1@example.com,qwe123
qa_user2,user2@example.com,asd456
І ось у скриптах використовуєш
pm.iterationData.get("login")
pm.environment.set("test_login", pm.iterationData.get("login"));
pm.environment.set("test_email", pm.iterationData.get("email"));
pm.environment.set("test_password", pm.iterationData.get("password"));І кожен запуск буде бігти з новими даними
Як їх можно комбінувати? впринцепі не дуже складно але треба зрозуміти логику
ну ось вам приклад реального флоу
Тестуємо створення акаунта, авторизацію, запит до захищеного ресурсу
ЗАпис Created User
const user = {
login: pm.iterationData.get("login"),
email: pm.iterationData.get("email")
};
pm.environment.set("test_login", user.login);
pm.environment.set("test_email", user.email);Дали запит на логін.
const login = pm.environment.get("test_login");
pm.test("Логін успішний", () => {
pm.response.to.have.status(200);
const res = pm.response.json();
pm.environment.set("access_token", res.token);
});
postman.setNextRequest("Отримати Профіль");запит на отримання того чи іншого профілю
pm.test("Профіль OK", () => {
pm.response.to.have.status(200);
});Поінт який, Якщо маєш 2+ ріквести, роби з них флоу.
Якщо тестуєш багато різних даних, не копіпасти руками, а юзай pm.iterationData.
Це не full-scale автомейшн, але це вже QA, який поважає свій час
Сподіваюсь корисно) якщо так ставьте серденько, задавайте питання залюбки відповім у вільний час.
Може ще хочете продовження з більш складними прикладами (pre-request, custom utils, або інтеграція з Newman)?
Всіх Обняв, Гарного вечора вам 🤗🤗🤗