Ответ
Переменные в Postman — это механизм для хранения и повторного использования значений, что делает коллекции динамическими, поддерживаемыми и пригодными для разных окружений.
Типы переменных и их область видимости (от самой узкой к широкой):
- Локальные (Local Variables): Существуют только в рамках выполнения одного запроса или сценария. Идеальны для временных вычислений.
- Переменные коллекции (Collection Variables): Доступны для всех запросов внутри конкретной коллекции. Используются для данных, общих для сценария (например,
base_urlAPI). - Переменные окружения (Environment Variables): Привязаны к конкретному окружению (dev, staging, prod). Позволяют быстро переключать контекст (URL, ключи API).
- Глобальные переменные (Global Variables): Доступны во всех коллекциях и окружениях в рамках рабочего пространства. Используются для редко меняющихся общих значений.
- Переменные данных (Data Variables): Импортируются из внешних CSV/JSON файлов для запуска итераций в Collection Runner.
Синтаксис и использование:
- Ссылка на переменную:
{{variable_name}}в URL, headers, body. -
Установка/получение в скриптах (JavaScript):
// Установка переменной в текущем окружении pm.environment.set("auth_token", "eyJhbGciOiJ..."); pm.collectionVariables.set("user_id", 12345); // Получение значения переменной const token = pm.environment.get("auth_token"); const baseUrl = pm.collectionVariables.get("base_url"); // Удаление переменной pm.environment.unset("temp_value"); - Использование в тестах:
// Проверка, что переменная установлена и имеет ожидаемое значение pm.test("Auth token is present", function () { pm.expect(pm.environment.get("auth_token")).to.be.a('string').and.to.not.be.empty; });Динамические переменные: Postman предоставляет предустановленные динамические переменные, например
{{$timestamp}}(текущее время) или{{$guid}}(генерация UUID), полезные для создания уникальных данных в запросах.
Ответ 18+ 🔞
Да ты посмотри, какие тут, блядь, механизмы развесистые! Переменные в Postman — это ж как карманные заначки, только для API. Вместо того чтобы каждый раз вручную цифры тыкать, можно один раз записать значение и потом по всему проекту им тыкаться, как палкой в говно.
Какие они бывают, эти твои переменные, и где их искать (от своей табуретки до всего района):
- Локальные (Local Variables): Это как спрятать сотку в носке на один вечер. Живут только пока один запрос или скрипт выполняется. Сделал вычисление — использовал — забыл. Красота, блядь.
- Переменные коллекции (Collection Variables): А это уже общак для своей банды. Положил в него, например, основной адрес API (
base_url) — и все запросы в этой коллекции могут им пользоваться. Удобно, ёпта. - Переменные окружения (Environment Variables): Вот это уже серьёзный разговор! Отдельные наборы для девов, для тестов и для прода. Щёлкнул переключателем — и всё, ты уже на другом сервере, с другими ключами. Волшебство, блядь, а не работа.
- Глобальные переменные (Global Variables): Это как памятник Ленину на площади — стоит себе, всем виден, из всех окон торчит. Положил сюда что-то общерабочее — и все коллекции, все окружения могут это подцепить. Только не намусорь там, а то потом сам не разберёшься.
- Переменные данных (Data Variables): Самый хардкор. Берёшь здоровенный CSV или JSON файл, набитый тестовыми данными, и запускаешь коллекцию как конвейер, подставляя значения из строки. Автоматизация, блядь, мать её!
Как этим богатством пользоваться, чтобы не выглядеть конём:
- Позвать переменную в любом месте запроса: Просто оберни её имя в двойные фигурные скобки —
{{имя_переменной}}. Кинешь это в URL, хедеры или тело — Postman сам подставит значение. Лёгкость необыкновенная! -
Ковыряться в них через скрипты (на этом вашем JavaScript):
// Запихнуть значение в переменную окружения pm.environment.set("auth_token", "eyJhbGciOiJ...сука, какой длинный токен"); // Или в переменную коллекции pm.collectionVariables.set("user_id", 12345); // Достать оттуда же const token = pm.environment.get("auth_token"); // Ага, держи свою строку const baseUrl = pm.collectionVariables.get("base_url"); // Выкинуть нахуй, если надоела pm.environment.unset("временная_хрень"); - Проверять их в тестах, чтобы не обосраться:
// Проверяем, что токен вообще есть и он не пустой pm.test("Auth token is present", function () { pm.expect(pm.environment.get("auth_token")).to.be.a('string').and.to.not.be.empty; // Если нет — тест провален, иди разбирайся, мудак });А ещё есть, блядь, волшебные штуки — динамические переменные! Postman сам может сгенерить тебе текущее время (
{{$timestamp}}) или случайный UUID ({{$guid}}), чтобы каждый запрос был уникальным. Вставил такую хуйню в тело — и никаких конфликтов данных, красота!