首页 > 解决方案 > 如何将文件夹下的所有 CSV 数据文件提供给 newman 脚本并执行?

问题描述

我做了什么?

我有一个集合,需要为从 CSV 数据文件传递的一组数据集执行该集合。我可以使用 1 个 CSV 数据文件执行。

我在寻找什么?

我需要迭代地执行文件夹中的 CSV 文件集并将文件提供给 newman 脚本文件。

纽曼脚本是什么样子的?

    var fs = require('fs'),
    cheerio = require('cheerio'),
    path = require('path'),
    newman = require('newman'),
    os = require("os");

const directoryPath = path.join(__dirname, 'payload');

fs.readdir(directoryPath, function(err, files) {
    if (err) {
        return console.log('Invalid directory: ' + err);
    }
    files.forEach(function(file) {
        var dataFile = 'payload/' + file + ".csv";
        var dataLog = 'payload/' + file + ".txt";
        newman.run({
                reporters: 'cli',
                collection: 'valid-routes-finder.json',
                iterationData: dataFile,
                delayRequest: 500,
                iterationCount: 2
            })
            .on('start', function(err, args) {
                console.log(args);
                console.log(err);
            })
            .on('console', function(err, args) {
                var dataSupplied = args.messages[0];
                var totalRecords = dataSupplied.split(",")[0];
                if (parseInt(totalRecords) > 0) {
                    fs.appendFileSync(dataLog, dataSupplied);
                    fs.appendFileSync(dataLog, '\r\n');
                }
            })
            .on('error', function(err, summary) {
                console.log(err);
            })
            .on('done', function(err, summary) {
                console.log("Execution completed.");
            });
    });
});

需要支持:

我想将数据文件动态地传递给 newman,以便为每个 CSV 数据文件运行脚本。

标签: newman

解决方案


我找到了实现这一目标的方法。对不起,我很愚蠢。声明一个方法并调用。

var fs = require('fs'),
    path = require('path');
cheerio = require('cheerio'),
    newman = require('newman'),
    os = require("os");

const directoryPath = path.join(__dirname, 'payload');

fs.readdir(directoryPath, function(err, files) {
    if (err) {
        return console.log('Unable to scan directory: ' + err);
    }
    files.forEach(function(file) {
        runNewman(file);
    });
});

function runNewman(data) {

    var csvFile = "payload/" + data;
    var logFile = "payload/" + data + ".txt";

    newman.run({
            reporters: ['htmlextra', 'cli'],
            collection: 'valid-routes-finder.json',
            iterationData: csvFile,
            delayRequest: 100
        })
        .on('console', function(err, args) {
            var dataSupplied = args.messages[0];
            var totalRecords = dataSupplied.split(",")[0];
            if (parseInt(totalRecords) > 0) {
                fs.appendFileSync(logFile, dataSupplied);
                fs.appendFileSync(logFile, '\r\n');
            }
        })
        .on('done', function(err, summary) {
            console.log("Execution completed.");
        });
}

推荐阅读