Рано или поздно вы зададитесь вопросом: как можно читать или записывать файлы на диск при использовании Postman?

Быстрый ответ на этот вопрос: вы не можете.

Последнее обновление: февраль 2021 г.

Отсюда начинается ответ на этот вопрос и возможное решение, которое потребует некоторых навыков JavaScript с вашей стороны.

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

Представляем Ньюмана

Говоря об автоматизации с Postman, практически невозможно обойтись без Newman. Это вспомогательный инструмент командной строки для Postman, который хорошо интегрируется с серверами CI / CD и идеально подходит для сценариев, в которых вмешательство человека не требуется или не требуется.

В этом руководстве предполагается, что вы уже хорошо понимаете, как работают Postman и Newman. Если это не так, подумайте о том, чтобы посмотреть мой Онлайн-курс Почтальона, где вы узнаете все, что вам нужно знать.

Если вы никогда раньше не использовали Newman, я настоятельно рекомендую вам познакомиться с Newman (и неявно с NodeJs и npm), потому что, вероятно, остальная часть этой статьи будет для вас тарабарщиной.

Эта проблема

Представим, что у вас есть коллекция Postman, которая уже выполняется автоматически с помощью Newman и CI / CD-сервера, такого как Jenkins.

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

Хороший! Теперь проблема в том, что вы не можете записать какие-либо переменные или любую другую информацию на диск изнутри предварительного запроса или тестового сценария. API для поддержки этого не существует, и любые сценарии, которые вы пишете в Postman, выполняются в ограниченной среде песочницы, которая не имеет доступа к диску (по очевидным причинам безопасности).

Подход

Мы можем обойти это ограничение, используя модуль Файловая система Node.js (fs). Напишите приведенный ниже сценарий в файл с именем writeToDisk.js.

Откройте терминал в папке, где вы сохранили скрипт, и выполните следующую команду:

узел writeToDisk.js

Отлично, теперь мы знаем, как писать файлы. И поверьте мне: если вы поместите приведенный выше фрагмент кода в сценарий Postman, он потерпит неудачу.

Если вы хотите узнать, как использовать Postman для тестирования API, я создал онлайн-курс, который начинается с основ Postman и помогает вам понять основы тестирования API. Узнать больше о курсе.

Взлом Ньюмана

Теперь вы, вероятно, спрашиваете себя: мы знаем, что мы не можем записывать файлы из Postman, так как мы собираемся связать Ньюмана и скрипт, который мы только что написали? Подожди секунду, и я открою тайну.

Когда вы, вероятно, работаете с Newman примерно так:

Newman запускает my-collection.json

Это оставляет мало места для взлома. Но внимательно изучив документацию Newman, вы можете найти альтернативу запуску Newman: вы можете запустить Newman как модуль npm. Замените или закомментируйте содержимое файла writeToDisk.js и вставьте в него следующее:

Если это выполняется успешно, вывод будет выглядеть примерно так:

Если это приводит к ошибке типа Ошибка: не удается найти модуль newman, возможно, ваш NODE_PATH настроен неправильно. Пожалуйста, проверьте следующую ссылку, чтобы исправить это: https://stackoverflow.com/a/14515868/766177

Если вышеприведенное решение слишком продвинуто для вас, выполните следующую команду внутри своей папки, содержащей сценарий, и повторите попытку:

нпм я новичок

Получение необходимых данных

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

Короче говоря, во время работы Ньюман генерирует множество различных видов событий, на которые мы можем подписаться. Например, когда событие start указывает, что запуск сбора данных запущен. События не только указывают, когда что-то произошло, но они также несут некоторые дополнительные данные, связанные с этим событием. И именно тогда мы можем подключиться и получить нужные нам данные.

К сожалению, сценарий, необходимый для его запуска, становится еще более сложным:

Но это приведет нас в правильном направлении. Мы подписываемся на событие request, которое предоставит нам объект ответа, из которого мы можем извлечь тело ответа и зарегистрировать его с помощью console.log. . То же самое касается beforeRequest события, которое дает нам тело запроса.

Собираем все вместе

Теперь мы знаем, как записывать файлы на диск, и знаем, как извлекать нужную нам информацию из событий, которые мы получаем от Ньюмана.

Теперь вместо ведения журнала мы можем просто записать данные в файл:

Если вам нравится такой контент и он помог вам решить проблему, помогите мне создать больше. Оставьте комментарий, поделитесь и нажмите 👏 несколько раз (до 50 раз).

Идти дальше

Затем вы можете создать несколько случайных имен файлов, чтобы не переопределять одни и те же файлы снова и снова. Я оставлю это на ваше усмотрение, но вот один из способов, как это сделать:

Спасибо, что дочитали эту статью до конца. Если вам понравилось, оставьте комментарий, поделитесь и нажмите 👏 несколько раз (до 50 раз). Это поможет другим узнать эту информацию, а, возможно, и кому-то еще.

Подпишитесь на меня на Medium или YouTube, если вас интересуют другие руководства, подобные этому.

Хотите узнать больше о Почтальоне и Ньюмане?

Я не только пишу сообщения, но и являюсь онлайн-инструктором. Поэтому, если вы хотите узнать больше о Postman / Newman, тестировании, непрерывной интеграции и многом другом, обязательно посетите мой онлайн-курс по Postman, перейдя по ссылке ниже.

Поскольку вы заядлый ученик и полностью изучили эту статью, я поделюсь с вами ссылкой с щедрой скидкой.

* Почтальон: Полное руководство (онлайн-курс) *