Как в Postman использовать данные из файла |
20.08.2025 00:00 |
Автор: Ольга Назина (Киселёва) В Postman есть возможность загружать данные из файла — указал в запросе «возьми имя из файла», сделал файл на 100 имен, и вуаля! Запускаешь 1 запрос, а он выполняется 100 раз с разными данными. Так удобно готовить тестовые данные. Заранее прикинул классы эквивалентности, и создал всё одним махом. Нужно исправить? Вот он, файлик, в формате csv или json — легко читается, легко исправляется. А вот что с этим файликом делать дальше? Как сказать постману, что мы хотим подставить эти данные в запрос или в автотест? Где какой синтаксис использовать? Об этом и поговорим в статье на примере системы Users. Я выложила файлы и запросы, используемые в статье, на гитхаб — можно скачать и использовать «на пробу», так как Users открытая бесплатная система, все запросы будут работать. Содержание Как создать файл для PostmanДопустим, что мы хотим создать несколько пользователей с уникальным именем и email, передав их данные через файл. Работать будем с методом doregister. Postman поддерживает два формата — CSV и JSON, создадим файлы для обоих. CSV-файл CSV читается так:
Мы хотим передавать имя и email. Сделаем такой файл:
Можно скопировать этот текст и вставить в пустой файл формата CSV. Или скачать его с гитхаба. (См также: Как скачать файл с гитхаба). Я специально сделала названия колонок с припиской «_from_file», чтобы они отличались от названия самой переменной в теле запроса — иначе это может запутать, откуда брать информацию. В файле могут быть «лишние» колонки, от этого ничего не сломается, если какие-то данные из него мы НЕ берем. Причем нужные нам колонки могут идти в любом порядке, а не так, как в запросе — так как достаются они по названию, а не порядковому номеру. Единственное условие — название колонки должно быть на английском языке. Или написано латиницей и без пробелов. Переменную на русском языке постман откажется сохранить. А если название колонки будет в виде цифр (например, «11»), то вы не сможете загрузить этот файл в раннере постмана, тоже будет ошибка. Ну а пробелы в названии я вообще не рекомендую ставить, даже если оно будет работать сейчас — не факт, что будет работать завтра. Аналогично с русскими буквами или цифрами. Может, в какой-то момент Postman будет их поддерживать, но надолго ли? Лучше сразу писать на английском и не переживать, что завтра работающий запрос развалится. JSON-файл JSON читается так:
Мы хотим передавать имя и email. Сделаем такой файл:
Пример файла можно также скачать с гитхаба. Как использовать данные из файла в запросеЧерез переменную:
Давайте запустим doregister, подставив в запрос данные из нашего файла (например, csv). Запрос также можно скачать с гитхаба и импортировать в постман. Вместо простого значения (например, «Ольга») мы указываем переменную через двойные фигурные скобки. Название переменной — это название колонки в файле: email_from_file и name_from_file. Названия переменных не должны совпадать с названием параметра в запросе! Они должны совпадать только с названием нужной колонки в файле. Если запрос идет в формате JSON (вкладка raw, а не form-data в постмане), то название переменной мы берем в кавычки, так как это строка. И да, оно нормально разименуется. Запрос будет таким:
Всё, переменные готовы, теперь можно вызывать запрос! Для этого запускаем коллекцию в раннере → многоточие → Run. В раннере сразу выбираем файл, не трогая другие параметры (run manually стоит, а количество итераций проставится по файлу) → Select file. Select from computer → выбираем файл. Postman показывает превью файла, чтобы мы проверили, что загрузили то, что надо. В превью сразу видно, сколько будет итераций — сколько раз выполнится запрос. В нашем случае — 4 раза: Проверили? Запускаем — внизу есть 2 кнопки:
Тут, как ни странно, надо жать не на большую рыжую кнопку — нам нет смысла сохранять этот файл в пространстве, поэтому выбираем «Use locally». Впрочем, оба способа будут работать: Информация в блоке «Run configuration» обновилась — количество итераций теперь 4, а в выборе файла — название нашего файла: Всё верно, можно запускать! Всё! Postman прогонит наш запрос 4 раза и покажет результат. На каждый запрос в результате можно тыкнуть и покажется вся информация — какой запрос ушел, какой ответ вернулся. Открывается по умолчанию ответ (response), но можно посмотреть запрос (request), чтобы убедиться, что в запросе были переданы правильные значения. А там ровно то, что мы посылали: Как использовать данные из файла в тестахЧерез переменную, название которой берется из файла. Возможные варианты записи:
Но вторая запись (pm.variables.get) — работает для любой переменной. И более узкоспециализированная всегда победит — если есть локальная переменная с таким же названием, система подставит именно её. Области видимости переменных (кто меньше места занимает, тот и круче): Поэтому если хотите взять данные из файла, то лучше использовать запись, созданную под них — pm.iterationData.get("my_data"). Раньше ещё работал такой вариант:
Например, для переменной email в файле мы бы написали так:
Но сейчас постман обычно подсвечивает этот код красным и говорит, что запись устарела, не используйте её. Однако вы можете встретить её в каких-то старых статьях / примерах кода, вот знайте, чем такое заменять! Давайте напишем автотесты на то, что в ответе нам возвращается именно то, что мы передали на входе. Возьмем за основу тест из сниппетов:
По сути сам тест тут такой:
И нам надо понять, что с чем мы сравниваем. Запишем прям в переменные X и Y. X — что сравниваем. Мы берем ответ от сервера — это JSON-объект, находим там имя. Оно на первом уровне вложенности, так что просто пишем через точечную запись:
А сравнивать будем с тем, что пришло из файла, то есть с iterationData.get. А что get? Берем название колонки из файла — name_from_file:
Полностью тест будет выглядеть так:
Конечно, можно обойтись без X и Y. Давайте напишем для email тест без этих прослоек. Но запись «iterationData.get…» достаточно длинная, её можно вынести в переменную!
Я специально дала переменной имя, которое не совпадает с названием в файле, чтобы опять таки не путаться, где что. А так то можно назвать их одинаково, ничего не мешает. А можно и эту прослойку выкинуть, тогда тест будет выглядеть так:
Выбирайте вариант, который вам больше по душе! ИтогоЧтобы использовать данные из файлы, укажите название столбца в CSV / параметра JSON в виде переменной:
Запись data.my_data устарела! Раньше использовалась в скриптах. Название переменной лучше писать на английском языке и без пробелов
PS — больше полезных статей ищите в моем блоге по метке «полезное». А полезные видео — на моем youtube-канале PS — статья написана в помощь студентам моего курса по автоматизации в Postman-е |