【问题标题】:How do I handle asynchronous calls when running newman (Postman) collections with node?使用节点运行 newman (Postman) 集合时如何处理异步调用?
【发布时间】:2019-12-06 17:54:46
【问题描述】:

我可以用 bash 做到这一点,但我正在尝试学习节点并希望从那里开始。如何使 newman 运行调用同步。我不太了解 async/await 的使用(如果这是这里需要的话)。我有以下脚本循环一堆集合文件(每个包含多个请求)并调用 newman 在每个文件上运行:

// node imports
const fs = require('fs');
const newman = require('newman');

// test variables
const testFolder = './api-tests/';

// read all files in the test folder
fs.readdirSync(testFolder).forEach(file => {
    console.log('Running file: ' + file);

    // run newman using the file
    newman.run({
        collection: require(testFolder + file),
        delayRequest: 500,
        iterationData: [
            {
                'host': 'localhost',
                'port': '8080'
            }
        ],
        reporters: ['cli', 'html']
    }, (err, summary) => {
        if (err) {
            throw err;
        }
        console.log(file + ' run complete');
    });
});

Newman 立即执行每个文件,而不是等待循环返回到下一个文件。

谢谢。

【问题讨论】:

标签: javascript node.js postman postman-collection-runner newman


【解决方案1】:

你可以使用deasync https://github.com/abbr/deasync

    var done = false;
    fs.readdirSync(testFolder).forEach(file => {
      newman.run({
      ...
      }).on('start', function (err, args) { // on start of run, log to console
            console.log('running a collection...');
      }).on('done', function (err, summary) {
            ...
            done = true;
      });
      require('deasync').loopWhile(function(){return !done;});
      done = false;
   }

【讨论】:

    猜你喜欢
    • 2018-05-26
    • 1970-01-01
    • 2022-01-18
    • 2017-11-03
    • 2019-02-12
    • 2020-03-16
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    相关资源
    最近更新 更多