Я пытаюсь запустить следующий сценарий Postman через Newman, чтобы записать ответ в файл:
//verify http response code
pm.test("Report Generated", function () {
pm.response.to.have.status(200);
});
var fs = require('fs');
var outputFilename = 'C:/Users/archit.goyal/Downloads/spaceReport.csv';
fs.writeFileSync(outputFilename, pm.response.text());
Запрос дает ответ, но при записи в файл выдает следующую ошибку: 1? TypeError в тестовом скрипте
┌─────────────────────────┬──────────┬──────────┐
│ │ executed │ failed │
├─────────────────────────┼──────────┼──────────┤
│ iterations │ 1 │ 0 │
├─────────────────────────┼──────────┼──────────┤
│ requests │ 20 │ 0 │
├─────────────────────────┼──────────┼──────────┤
│ test-scripts │ 20 │ 1 │
├─────────────────────────┼──────────┼──────────┤
│ prerequest-scripts │ 0 │ 0 │
├─────────────────────────┼──────────┼──────────┤
│ assertions │ 2 │ 0 │
├─────────────────────────┴──────────┴──────────┤
│ total run duration: 1m 48.3s │
├───────────────────────────────────────────────┤
│ total data received: 1.24MB (approx) │
├───────────────────────────────────────────────┤
│ average response time: 5.3s │
└───────────────────────────────────────────────┘
# failure detail
1. TypeError fs.writeFileSync is not a function
at test-script
inside "3i_BMS_Amortization_Schedule / GetReport"
Пожалуйста помоги
Я добавил код в приложение, но запустил и вызвал его модули через Newman. Неужели и так не пойдет? Если нет, есть ли способ записать ответ (в текстовом формате) в файл CSV
Это не сработает, если в приложении есть что-то, что не поддерживается. Разве вы не можете обработать это действие вне коллекции Postman и добавить что-то подобное прямо в сценарий Ньюмана? У Ньюмана есть варианты возврата данных ответа.
Я пытаюсь сделать это только через newman. Я запускаю приведенный выше код с помощью newman, и ответ также из консоли newman. Было бы здорово, если бы вы могли поделиться любым фрагментом рабочего кода, который будет работать через newman, чтобы сохранить ответ.
Если вы откроете коллекцию в пользовательском интерфейсе почтальона, будет ли приведенный выше код содержать оператор fs на вкладке Test? Если он там, значит, вы неправильно его используете с Ньюманом. Я бы добавил модуль fs, что бы я ни хотел с ним делать, к чему-то вроде этого - github.com/postmanlabs/newman/blob/develop/…





Сам Почтальон не может выполнять такие скрипты. Чтобы сохранить ваши ответы на все запросы api, вы можете создать сервер nodeJS, который будет вызывать api через newman, а затем сохранять ответ в локальный файл. Вот пример -
var fs = require('fs'),
newman = require('newman'),
allResponse=[],
outputFilename = 'C:/Users/archit.goyal/Downloads/spaceReport.csv';
newman.run({
collection: '//your_collection_name.json',
iterationCount : 1
})
.on('request', function (err, args) {
if (!err) {
//console.info(args); // --> args contain ALL the data newman provides to this script.
var responseBody = args.response.stream,
response = responseBody.toString();
allResponse.push(JSON.parse(response));
}
})
.on('done', function (err, summary) {
fs.writeFile(outputFilename,"");
for(var i =0;i<allResponse.length;i++)
{
fs.appendFileSync(outputFilename,JSON.stringify(allResponse[i],null,5));
}
});
Обратите внимание, что приведенный выше код сохранит только ответы. Другие данные, такие как запрос или UR1, могут быть извлечены аналогичным образом. Чтобы запустить это, установите newman в тот же каталог, что и сценарий, затем запустите сценарий, используя -
node file_name.js
@ArchitGoyal, если мой ответ вам помог, вы можете принять мой ответ, щелкнув пустую галочку, которая станет зеленой :)
Если вы добавляете fs в тест Postman, это не сработает, поскольку это не один из модулей, которые вы можете вызывать из приложения. getpostman.com/docs/v6/postman/scripts/…