输出responseBody来自postman集合的newman脚本

时间:2018-03-29 12:10:39

标签: javascript node.js postman newman

我正在尝试使用本地保存的邮递员集合中的newman运行script.js。在邮递员中,调用有效,并返回我需要访问的响应正文令牌。

我不在乎如何回复身体我只是不想打开邮差,如果我不需要。

我遇到错误ReferenceError: responseBody is not defined

对此事的任何帮助都会非常感激。

$ node script.js

var newman = require('newman'); // require newman in your project

// call newman.run to pass `options` object and wait for callback
newman.run({
    collection: require('./pathto/my_coll.postman_collection.json'),
    reporters: 'cli'
}, function (err) {
    if (err) { throw err; }
    // console.log(responseBody);
    JSON.parse(responseBody);

});

console.logJSON.parse似乎都没有做到这一点,因为responseBody似乎没有从头开始定义

用尽参考资料:

https://www.getpostman.com/docs/v6/postman/scripts/postman_sandbox

https://www.npmjs.com/package/newman

how to get whole html or json repsonse of an URL using Newman API

3 个答案:

答案 0 :(得分:1)

您可以尝试console.log(summary.run.executions)并从那里深入了解它。 Newman脚本并不真正知道该上下文中的responseBody是什么,所以它不知道要注销什么。

查看纽曼文档以获取更多信息https://github.com/postmanlabs/newman/blob/develop/README.md#cli-reporter-options

答案 1 :(得分:1)

邮递员集合是一系列请求。

您正在运行整个集合(这是Newman一起运行的一系列请求)

因此,在回调函数中记录/解析responseBody是不正确的(在逻辑上说明这一点)

根据Newman Docs,它指出使用错误摘要这两个参数调用 .run 函数的回调

回调中的摘要参数包含运行的完整摘要,如果您想使用该摘要,可以按照文档进行操作。

现在, 你要做的是基本上记录请求的响应。

您需要在测试脚本中为集合中的每个请求编写一个console.log(responseBody)/ JSON.parse(responseBody),然后使用newman运行集合,每个每个responseBody请求将根据您的需要进行注销/解析。

要访问摘要,您可以像这样修改您的功能:

var newman = require('newman');
newman.run({
    collection: require('./C1.postman_collection.json'),
    reporters: 'cli'
}, function (err, summary) {
    if (err) { throw err; }
    console.log(summary);
});

答案 2 :(得分:0)

应该可以通过解析缓冲流来实现:

var newman = require('newman');
newman.run({
    collection: require('./C1.postman_collection.json'),
    reporters: 'cli'
}, function(err, summary) {
    if (err) {
        throw err;
    }
    summary.run.executions.forEach(exec => {
        console.log('Request name:', exec.item.name);
        console.log('Response:', JSON.parse(exec.response.stream));

    });
});