Skip to content

osborne-cox/api-testing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

api-testing

Коллекция API-тестов в Postman для публичного REST API reqres.in — бэкенда специально для тренировки тестировщиков (регистрация не нужна, всегда онлайн).

Коллекция: reqres-collection.json (формат Postman Collection v2.1) — 8 запросов, 24 проверки в Tests.

Что покрыто

# Метод Эндпоинт Что проверяем
1 GET /api/users?page=2 200, есть поле data, это непустой массив, page == 2, у каждого юзера есть id/email
2 GET /api/users/2 200, data.id == 2, набор полей юзера
3 GET /api/users/23 404, тело — пустой объект {}
4 POST /api/users {name, job} 201, есть id, эхо name/job, есть createdAt
5 PUT /api/users/2 {name, job} 200, есть updatedAt, job обновился
6 DELETE /api/users/2 204, тело пустое
7 POST /api/login (валидные данные) 200, есть непустой token
8 POST /api/login (без пароля) 400, есть error == "Missing password"

⚠️ Главный подводный камень: x-api-key

С 2024 года reqres.in закрыл все /api/* за заголовком x-api-key. Без него прилетит 401, и абсолютно все тесты покраснеют — а большинство старых туториалов по reqres про это молчат. Если коллекция вдруг падает 401 на ровном месте — почти всегда дело именно в ключе.

В этой коллекции ключ уже зашит:

  • На уровне коллекции стоит Authorization → API Key: key = x-api-key, value = {{apiKey}}, in = header. Postman сам подставляет его в каждый запрос — руками в каждый реквест добавлять не нужно.
  • Переменные коллекции: {{baseUrl}} = https://reqres.in, {{apiKey}} = reqres-free-v1 (публичный бесплатный ключ).

Импорт в Postman

  1. Postman → Import → перетащи reqres-collection.json.
  2. Слева появится коллекция reqres-api-tests.
  3. Run collection (кнопка ▶ → Run) — должно быть 24/24 passed.

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

Прогон из консоли (Newman)

Newman — CLI-раннер Postman. Удобно гонять коллекцию без GUI и втыкать в CI.

# нужен Node.js 18+
npm install            # ставит newman локально (см. package.json)
npm test               # = newman run reqres-collection.json

Или глобально, без package.json:

npm install -g newman
newman run reqres-collection.json

Ожидаемый итог — все 8 запросов и 24 ассерта зелёные.

Заметки

  • reqres ничего не сохраняет. POST/PUT/DELETE возвращают «успех» (201/200/204) и эхо данных, но в базе ничего не меняется — это мок. Поэтому после DELETE /api/users/2 тот же юзер по GET /api/users/2 всё ещё на месте. Не баг.
  • Пароль на /api/login по сути не проверяется. Токен отдаётся под любой email/пароль; единственный негативный кейс, который reqres реально валидирует, — отсутствие пароля (→ 400). Поэтому тест №8 проверяет именно пропуск поля, а не «неверный пароль».
  • 204 No Content — тело пустое, pm.response.json() на нём упадёт. Поэтому в тесте №6 проверяется pm.response.text(), а не .json().
  • data.id — число, а id при создании — строка. reqres отдаёт id: "482" (строкой) на POST, но data.id: 2 (числом) на GET. Поэтому в ассертах для создания не проверяется тип id, только наличие.

About

API-тесты reqres.in: Postman-коллекция + Newman, позитивные и негативные сценарии

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors