Как используются переменные в Postman и для чего они нужны?

Ответ

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

Типы переменных и их область видимости (от самой узкой к широкой):

  1. Локальные (Local Variables): Существуют только в рамках выполнения одного запроса или сценария. Идеальны для временных вычислений.
  2. Переменные коллекции (Collection Variables): Доступны для всех запросов внутри конкретной коллекции. Используются для данных, общих для сценария (например, base_url API).
  3. Переменные окружения (Environment Variables): Привязаны к конкретному окружению (dev, staging, prod). Позволяют быстро переключать контекст (URL, ключи API).
  4. Глобальные переменные (Global Variables): Доступны во всех коллекциях и окружениях в рамках рабочего пространства. Используются для редко меняющихся общих значений.
  5. Переменные данных (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. Вместо того чтобы каждый раз вручную цифры тыкать, можно один раз записать значение и потом по всему проекту им тыкаться, как палкой в говно.

Какие они бывают, эти твои переменные, и где их искать (от своей табуретки до всего района):

  1. Локальные (Local Variables): Это как спрятать сотку в носке на один вечер. Живут только пока один запрос или скрипт выполняется. Сделал вычисление — использовал — забыл. Красота, блядь.
  2. Переменные коллекции (Collection Variables): А это уже общак для своей банды. Положил в него, например, основной адрес API (base_url) — и все запросы в этой коллекции могут им пользоваться. Удобно, ёпта.
  3. Переменные окружения (Environment Variables): Вот это уже серьёзный разговор! Отдельные наборы для девов, для тестов и для прода. Щёлкнул переключателем — и всё, ты уже на другом сервере, с другими ключами. Волшебство, блядь, а не работа.
  4. Глобальные переменные (Global Variables): Это как памятник Ленину на площади — стоит себе, всем виден, из всех окон торчит. Положил сюда что-то общерабочее — и все коллекции, все окружения могут это подцепить. Только не намусорь там, а то потом сам не разберёшься.
  5. Переменные данных (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}}), чтобы каждый запрос был уникальным. Вставил такую хуйню в тело — и никаких конфликтов данных, красота!