QA Interview Hub · База знань · Тести
API
Runner, data-driven і Newman
Collection Runner і data-driven тести
Collection Runner запускає всю колекцію або папку послідовно, з вибраним оточенням, кількістю ітерацій і затримкою між запитами. Результат — таблиця pass/fail по кожному pm.test.
Data-driven. У Runner підключаєш CSV або JSON-файл: один рядок = одна ітерація, колонки стають змінними. Зручно для граничних значень і негативних кейсів:
amount,currency,expectedStatus
150,UAH,201
0,UAH,400
-10,UAH,400
1000000000,UAH,422
150,XXX,400
У тілі запиту — {{amount}} і {{currency}}, у тесті:
pm.test(`amount=${pm.iterationData.get('amount')}`, () => {
pm.response.to.have.status(Number(pm.iterationData.get('expectedStatus')));
});
Назва тесту містить значення з ітерації, тому у звіті видно, на якому саме рядку впало. Number(...) потрібен, бо значення з CSV приходять рядками. Так один запит покриває п'ять кейсів, а нові межі додаються рядком у файлі без зміни скриптів.
На співбесіді: Collection Runner проганяє колекцію з оточенням і ітераціями. Для data-driven підключаю CSV чи JSON, де кожен рядок — ітерація з вхідними даними й очікуваним статусом, і так покриваю граничні та негативні значення.
Newman і CI
Newman — CLI-запуск колекцій без інтерфейсу, для CI. Колекцію й оточення експортують у JSON і кладуть у репозиторій:
npm i -g newman newman-reporter-htmlextra
newman run bank-api.postman_collection.json \
-e stage.postman_environment.json \
-d transfers.csv \
--env-var "password=$API_PASSWORD" \
-r cli,htmlextra,junit
Якщо хоч один тест упав, Newman завершується з ненульовим кодом, і CI-джоба червоніє. JUnit-звіт підхоплюється Jenkins, GitLab і GitHub Actions. Секрети передають через --env-var з секретів CI, а не зберігають у файлі оточення.
Альтернатива від самого Postman — Postman CLI (postman collection run), який працює з колекціями з хмарного workspace.
HTML-звіт від htmlextra зручно зберігати як артефакт джоби: коли щось падає вночі, видно сирі запити й відповіді без повторного запуску.
На співбесіді: У CI я запускаю колекцію через newman run з експортованим оточенням і JUnit-репортером, а секрети передаю через --env-var. Падіння тесту дає ненульовий код виходу, і пайплайн червоніє.
Межа Postman
Великий набір API-тестів з логікою, фабриками даних і рев'ю в git легше підтримувати в коді: Playwright request, Cypress cy.request, RestAssured. Postman сильний для дослідження API, швидких перевірок і спільної документації з розробниками.
Причини, чому регресію переносять у код:
- Колекція в JSON погано читається в diff, і рев'ю змін у скриптах незручне.
- Важко перевикористовувати логіку: хелпери, фабрики тестових даних, спільні фікстури.
- У коді API-тести живуть поруч з UI-тестами, з тим самим CI, репортингом і типами.
- В API-тестах на TypeScript можна типізувати відповіді й ловити зміни контракту ще на етапі компіляції.
При цьому Postman я не відкидаю: коли приходить новий ендпоінт, я спершу досліджую його в Postman, а вже стабільні сценарії переношу в автотести. Імпорт OpenAPI в Postman теж економить час на старті.
На співбесіді: Postman — для дослідження і швидких перевірок, а великий регресійний набір я тримаю в коді, наприклад на Playwright request, поруч з UI-тестами і з рев'ю в git. Так простіше перевикористовувати логіку і підтримувати тести.