У меня есть команда newman, которая отправляет запрос каждые 15 секунд, и один из параметров в запросе увеличивается на 1 каждый раз. Я создал собственный репортер newman, который является Node JS программой для печати только тела ответа. Мне нужно изменить свою программу так, чтобы после определенного ответа параметр запроса увеличился на 50, в противном случае - на 1. Сценарий предварительного запроса имеет доступ только к среде почтальона и глобальным переменным, но не имеет доступа к системным переменным среды, и я не могу прочитать временный файл в этом сценарии. С другой стороны, пользовательский репортер может делать все, что может Node JS программа, но не может устанавливать переменные среды почтальона. У кого-нибудь есть идеи, что может быть вероятным решением?
Код предварительного запроса:
conNo = postman.getGlobalVariable('consumer_number');
newConNum = Number.parseInt(conNo) + 1;
if(newConNum.toString().length == 12) {
postman.setGlobalVariable('consumer_number',newConNum);
} else {
postman.setGlobalVariable('consumer_number','number_exceeded_12_digits');
}
Код репортера:
function CustomNewmanReporter (newman, reporterOptions, collectionRunOptions) {
newman.on('request', function (err, obj) {
if (err) {
console.log('Error occurred.');
return;
}
fs = require('fs');
var successStream = fs.createWriteStream('success.txt', {flags: 'a'});
var failStream = fs.createWriteStream('fail.txt', {flags: 'a'});
if(obj.response.responseSize > 40) {
successStream.write("\n" + JSON.stringify(obj.request.url.query) + ":" + Buffer.from(JSON.parse(JSON.stringify(obj.response.stream)).data).toString('utf8'));
} else {
failStream.write("\n" + JSON.stringify(obj.request.url.query) + ":" + Buffer.from(JSON.parse(JSON.stringify(obj.response.stream)).data).toString('utf8'));
}
successStream.end();
failStream.end();
});
}