Тестирование API
Переменные и окружения в Postman: как создать, что важнее, данные из CSV и JSON
Переменная в Postman хранит значение, которое повторяется во многих запросах, например базовый адрес API, идентификатор или токен, а в запрос её подставляют в двойных фигурных скобках, например {{baseUrl}}. Окружение – это набор переменных для одной среды, тестового стенда или продакшена, и если переменная с тем же именем есть и в коллекции, Postman возьмёт значение из выбранного окружения. Тестовые данные из файла CSV или JSON подключают при запуске коллекции в Collection Runner, и запросы проходят столько раз, сколько в файле строк или объектов.
- {{имя}}
- так переменную подставляют в адрес, тело и заголовки запроса
- CSV и JSON
- файлы с тестовыми данными для прогона коллекции
- Бесплатно
- урок с заданиями в моём базовом курсе
Что такое переменные в Postman и как их создать
Переменная – это именованное хранилище для значения, которое нужно во многих запросах. Чаще всего в неё выносят базовый адрес API, который иначе пришлось бы вставлять в каждый запрос. Туда же кладут идентификатор созданной сущности, логин и пароль тестового пользователя, токен авторизации, а иногда и эндпоинты. Значение, которое встречается в одном-единственном запросе, выносить незачем.
Польза видна, когда что-то меняется. Например, ребрендинг: у проекта сменился адрес, а в коллекции тысяча запросов с позитивными и негативными проверками. Без переменной адрес пришлось бы править в каждом из них, с переменной его меняют в одном месте. О том, что и под какими именами хранить в переменных, команде лучше договориться заранее.
В версии 2025 года переменную удобнее всего создать прямо из адресной строки. Базовый адрес выделяют, выбирают Set as variable, затем Set as new variable, дают имя, например baseUrl, и указывают область действия (scope). Для учебной коллекции хватит уровня коллекции. В 2020 году я заводил переменные в настройках коллекции на вкладке Variables, и эта вкладка есть до сих пор.
Подстановка
В запросе имя пишут в двойных фигурных скобках: {{baseUrl}}/pet/findByStatus. Postman подсказывает имена переменных, как редактор кода, а при наведении показывает значение и уровень, откуда оно взято.
Переменная в теле
В JSON-теле переменная стоит на месте значения: "email": "{{email}}". Строковое значение остаётся в кавычках, как и без переменной.
Косая черта на стыке
Эндпоинты в Swagger начинаются с косой черты, поэтому в конце базового адреса её убирают, чтобы в адресе не оказалось двух подряд.
404 после замены
Чаще всего это лишний или повторённый кусок адреса. В моём уроке запрос не нашёл ресурс, потому что версия API /v2 оказалась и в переменной, и в строке запроса.
Идентификатор
Id питомца, созданного POST-запросом, сохраняют в переменную, например petId, и подставляют в PUT, GET и DELETE. Скриптом его можно забирать из ответа автоматически, чтобы после каждого создания в переменной лежал свежий id.
Сохранение
Изменённый запрос сохраняют через Ctrl+S или Cmd+S. Несохранённый помечен на вкладке точкой, и при прогоне коллекции уйдёт его старая версия.
Initial value и Current value: что видит команда
У переменной два значения. Initial value синхронизируется с серверами Postman, и его видят все, кому вы открыли коллекцию или окружение. Current value хранится только на вашем компьютере, подставляется в запросы при отправке и никуда не уходит. Когда переменную создают из строки запроса, Postman заполняет оба поля, так что стоит проверить, что куда попало.
Отсюда правило: пароли, токены, почту и телефоны держат только в Current value, а в Initial value кладут то, что не жалко показать команде. Для публичных коллекций это особенно важно. Postman проверяет публичные рабочие пространства сканером секретов и заменяет найденные пароли и токены заглушками, но к этому моменту их уже могли увидеть. А ссылку на публичную коллекцию студенты как раз присылают на проверку домашних заданий и вставляют в портфолио.
В новых версиях Postman поля переименованы: Initial value теперь называется Shared value, а Current value – Local value. Смысл остался прежним. Для секретов есть тип переменной Secret, который прячет значение за звёздочками, и хранилище Postman Vault, где секреты лежат отдельно от коллекций.
Окружения: одна коллекция для dev, stage и prod
По пути к пользователям код проходит несколько сред. На dev разработчики собирают новые функции, на stage лежит стабильная версия для тестирования, на prod работают заказчик и пользователи. Баги, найденные на stage, исправляют на dev, и исправленный код снова приезжает на stage. Запросы на всех средах одинаковые, отличаются базовый адрес, учётные записи, пароли и идентификаторы.
Окружение (environment) – это набор переменных под одну среду. Его создают в разделе Environments, называют, например, qa и заводят там переменные с теми же именами, что стоят в запросах. Окружение выбирают в выпадающем списке в правом верхнем углу, и все {{baseUrl}} коллекции начинают указывать на эту среду. Такой же список есть в окне прогона коллекции, так что весь набор тестов можно прогнать на нужном стенде.
Глобальные переменные (Globals) действуют во всём рабочем пространстве при любом окружении. В уроке 2020 года я храню в них почту и пароль тестового пользователя, а отдельный пароль для stage кладу в окружение stage. Пока это окружение не выбрано, его переменные в запросах недоступны.
Так обычно проверяют релиз. Регрессионную коллекцию прогоняют на stage с окружением stage, а после выкладки запускают на prod её папку со смоук-тестами, выбрав окружение prod. В нём лежат учётная запись для проверок на бою и безопасные данные, а запросы, которые создают заказы или списывают деньги, в смоук для prod не кладут.
Какая переменная важнее: порядок уровней
Переменную с одним именем можно завести на нескольких уровнях, и тогда Postman берёт значение с самого узкого. Если baseUrl есть и в коллекции, и в выбранном окружении, запрос уйдёт по адресу из окружения. На этом и держится переключение сред: в коллекции лежит адрес по умолчанию, а окружение его перекрывает.
При прогоне с файлом данных порядок уровней легко проверить на деле. В окружении stage лежит email тестового пользователя, а в CSV для проверки регистрации есть столбец email с десятью разными адресами. В Collection Runner каждая итерация возьмёт адрес из файла, потому что данные из файла важнее окружения, а запрос, отправленный вручную, уйдёт с адресом из окружения. Если в результатах прогона все десять регистраций ушли с одной почтой, имя столбца в файле не совпало с именем переменной.
Схема уровней есть в официальной документации Postman и в краткой справке рядом с переменными. От самого широкого к самому узкому они идут так.
Global
Всё рабочее пространство. Глобальное значение срабатывает, только если на других уровнях переменной с таким именем нет.
Collection
Переменные одной коллекции, от выбранного окружения они не зависят. Перекрывают глобальные.
Environment
Переменные выбранного окружения. Активным может быть только одно окружение, и его значения перекрывают коллекцию и глобальные.
Data
Значения из файла CSV или JSON во время прогона в Collection Runner. После прогона они не сохраняются.
Local
Временные переменные, которые задаёт скрипт запроса. Перекрывают все остальные и исчезают, когда запрос или прогон закончен.
Пример: прогон коллекции с данными из CSV и JSON
Когда один запрос нужно отправить с разными наборами данных, значения не вбивают руками перед каждой отправкой. Их кладут в файл CSV или JSON, а в запросе оставляют переменные с теми же именами. Такой подход называется тестированием на основе данных (data-driven testing): входные данные и ожидаемые результаты лежат таблицей, и один и тот же скрипт выполняется с каждым их набором.
На проектах, правда, так делают не всегда. Позитивные и негативные проверки обычно разводят по отдельным запросам: у них разные статус-коды, а тест в запросе ждёт какой-то один, и управлять смешанным прогоном трудно.
Ниже порядок действий из моего урока на примере регистрации в учебном API reqres.in. В уроке 2025 года то же самое сделано на API Petstore.
1. Переменные в запросе
В POST-запросе регистрации почту и пароль заменяют переменными {{email}} и {{password}}. Для проверки им сначала задают значения в Globals и отправляют запрос вручную.
2. Файл CSV
В первой строке пишут имена переменных ровно так, как в запросе: email,password. Каждая следующая строка – одна итерация, значения разделяют запятыми. Если файл сохранён из Excel, разделители стоит проверить в текстовом редакторе: в 2020 году я расставлял запятые в Notepad++, чтобы Postman правильно разобрал столбцы.
3. Или файл JSON
Массив объектов в квадратных скобках, один объект на итерацию, например [{"email": "test1@test.com", "password": "qwerty"}]. Строки пишут в кавычках, числа и true или false без кавычек, а после последнего объекта запятая не ставится.
4. Запуск
В коллекции нажимают Run, в поле Data выбирают файл через Select File, и кнопка Preview показывает, какое значение уйдёт в какую переменную. В версии 2025 года число итераций выставляется само по числу строк или объектов в файле. Там же задают окружение, порядок запросов и паузу между ними (delay).
5. Проверка результата
В результатах прогона у каждого запроса открывают Request body и смотрят, какие данные ушли на сервер в этой итерации. В уроке 2020 года учебный API ответил 400 на придуманных пользователей и 200 на пользователя из своей документации, и для учебного API это нормально.
6. Ошибка в файле
Если Preview пишет об ошибке в какой-то позиции, файл проверяют онлайн-валидатором JSON или открывают в редакторе с подсветкой синтаксиса, например в VS Code. У меня ошибкой оказался знак = вместо двоеточия между ключом и значением.
Видеоуроки, шпаргалки и задания
Переменные и окружения я разбираю во втором уроке мини-курса "Postman для тестировщика" на YouTube, там же показан запуск коллекции в Collection Runner. Файлам CSV и JSON посвящён четвёртый урок, в конце которого я отправляю из Postman SOAP-запрос. В 2025 году вышли обновлённые уроки на новой версии программы и учебном API Petstore: о переменных и окружениях и о тестовых данных в CSV и JSON.
В бесплатном базовом курсе по тестированию этой теме отведён отдельный урок с заданиями после теории. В шпаргалке по интерфейсу Postman окна коллекций, окружений и переменных собраны макетом, по которому можно пощёлкать, и там же нарисован порядок уровней. В тренажёре по JSON нужно найти синтаксические ошибки вроде той, из-за которой Postman не принял файл с данными в моём уроке.
- Урок курсаЭтот урок с заданиями – бесплатно
- Мой видеоурокпеременные и окружения в Postman
- Мой видеоурокPostman для тестировщика 2.0, переменные и окружения
- Мой видеоурокпеременные в CSV и JSON файлах, SOAP в Postman
- Мой видеоурокPostman для тестировщика 2.0, тестовые данные в CSV и JSON
- Шпаргалкаинтерфейс Postman
- Шпаргалкаскрипты и тесты в Postman
- Тренажёрнайди ошибки в JSON
- Тренажёрпрактика API-запросов
- СтатьяPostman для тестировщика: с чего начать
- СтатьяПростые автотесты в Postman
Курсы по теме
Вопросы и ответы
Что такое переменные в Postman?
Именованные значения, которые подставляются в запросы через двойные фигурные скобки, например {{baseUrl}}. В переменные выносят то, что повторяется во многих запросах: базовый адрес, идентификаторы, логины, токены. Когда значение меняется, его правят в одном месте, и править каждый запрос не приходится.
Как создать переменную в Postman?
Выделить значение в строке запроса, выбрать Set as variable и Set as new variable, задать имя и уровень, например коллекцию. Ещё переменную можно добавить в настройках коллекции на вкладке Variables, в окружении или в Globals. В запросе её пишут как {{имя}}.
Чем Initial value отличается от Current value?
Initial value синхронизируется с серверами Postman, и его видит команда. Current value хранится только на вашем компьютере и подставляется при отправке запросов, поэтому пароли и токены держат в нём. В новых версиях эти поля называются Shared value и Local value.
Что такое окружение в Postman?
Набор переменных для одной среды: разработки, тестового стенда или продакшена. Окружение выбирают в выпадающем списке, и все запросы коллекции начинают брать его значения, например другой базовый адрес. Так одну коллекцию прогоняют на разных стендах.
Что важнее: переменная коллекции или окружения?
Окружения. Postman берёт значение с самого узкого уровня: локальные переменные из скриптов важнее данных из файла, данные из файла важнее окружения, окружение важнее коллекции, а коллекция важнее глобальных переменных.
Как подставить данные из CSV или JSON в Postman?
Заменить значения в запросе переменными, подготовить файл, где имена столбцов CSV или ключи объектов JSON совпадают с именами переменных, и запустить коллекцию в Collection Runner, выбрав файл в поле Data. Каждая строка CSV или объект JSON становится отдельной итерацией.
Чем глобальные переменные отличаются от переменных окружения?
Глобальные действуют во всём рабочем пространстве при любом выбранном окружении. Переменные окружения работают, только пока это окружение выбрано, и при совпадении имён перекрывают глобальные.
Посмотреть программы курсов
Программа каждого курса открыта целиком: видны все модули, уроки и число шагов.



