Урок 6 из 8 · 20 мин · обновлено

Переменные и окружения

Как не повторять базовый адрес и токен в каждом запросе: переменные Postman в двойных фигурных скобках, окружения для тестового и рабочего сервера, переменные коллекции и автоматическое сохранение токена.

Зачем переменные

В коллекции уже десяток запросов, и в каждом повторяется https://dummyjson.com. А завтра команда скажет: тестируем на другом сервере. Править каждый запрос вручную долго, и что-нибудь обязательно забудется. То же с токеном: он устаревает через час, и вставлять его заново в каждый запрос неудобно.

Переменная в Postman — имя, вместо которого при отправке подставляется значение. Её пишут в двойных фигурных скобках:

Текст
GET {{baseUrl}}/products/1

Если baseUrl = https://dummyjson.com, Postman отправит запрос на https://dummyjson.com/products/1. Наведите курсор на переменную в строке адреса — Postman покажет её текущее значение.

Окружения

Окружение (environment) — набор переменных для одного сервера. В компаниях их обычно несколько:

Окружение baseUrl
Локальное http://localhost:8080
Тестовое https://test.shop.example
Рабочее https://api.shop.example

Запросы одни и те же, а переключатель окружений в правом верхнем углу Postman решает, куда они уйдут.

Создайте окружение для учебного API:

  1. Слева раздел Environments → + → назовите «Учебный».
  2. Добавьте переменную baseUrl со значением https://dummyjson.com.
  3. Добавьте переменную token с пустым значением и типом secret — Postman будет скрывать её значение звёздочками.
  4. Сохраните и выберите окружение «Учебный» в переключателе справа вверху.
  5. В запросах коллекции замените https://dummyjson.com на {{baseUrl}}.

Если переменная подсвечена красным — Postman её не нашёл: не выбрано окружение или опечатка в имени.

Будьте внимательны с рабочим окружением. Запрос DELETE к тестовому серверу безопасен, к рабочему — удалит настоящие данные. Многие команды вообще не держат в Postman рабочее окружение с правами на изменение.

Переменные коллекции

Кроме окружений, переменные бывают у коллекции — вкладка Variables в настройках коллекции. Они общие для всех её запросов в любом окружении. Туда кладут то, что не зависит от сервера, например номер тестового товара productId = 1:

Текст
GET {{baseUrl}}/products/{{productId}}

Если переменная с одним именем есть и в окружении, и в коллекции, Postman возьмёт значение из окружения: у него приоритет выше.

Токен сам попадает в переменную

Чтобы не копировать токен руками после каждого входа, его сохраняют автоматически. В запросе входа POST {{baseUrl}}/auth/login откройте вкладку Scripts → Post-response и вставьте:

JavaScript
const json = pm.response.json();
pm.environment.set("token", json.accessToken);
  • скрипт выполняется после получения ответа;
  • pm.response.json() превращает тело ответа в объект;
  • pm.environment.set записывает значение в переменную текущего окружения.

Теперь во вкладке Authorization у коллекции выберите Bearer Token и впишите {{token}}. У запросов внутри коллекции оставьте тип Inherit auth from parent — они возьмут авторизацию от коллекции. Один вход — и все закрытые запросы работают.

Попробуйте сами. Переведите все запросы коллекции «Учебный магазин» на {{baseUrl}}. Затем создайте второе окружение «Сломанный» с baseUrl = https://dummyjson.com/wrong, переключитесь на него и отправьте запрос товара. Что изменилось?

Ответ

В окружении «Сломанный» запрос уйдёт на https://dummyjson.com/wrong/products/1, и сервер ответит ошибкой — такого пути нет. Ни один запрос при этом вы не меняли: изменилось только окружение.

Так и работают на практике. Новый тестовый сервер — значит, новое окружение, а коллекция остаётся прежней. Переключитесь обратно на «Учебный», и всё снова заработает.

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. Как в Postman вставить переменную baseUrl в адрес запроса?

  2. Зачем нужны окружения?

  3. Что делает строка pm.environment.set("token", json.accessToken) в скрипте после запроса входа?