Совместно использовать переменную между сценарием предварительного запроса newman и пользовательским репортером - PullRequest
0 голосов
/ 02 мая 2020

У меня есть команда 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();

    });

}
...