3

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

我不在乎如何返回响应正文我只是不想打开邮递员,如果我不需要的话。

我一直遇到一个错误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

如何使用 Newman API 获取 URL 的整个 html 或 json 响应

4

3 回答 3

4

邮递员集合是请求的集合。

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

因此,在回调函数中记录/解析 responseBody 是不正确的(从逻辑上讲)

根据Newman Docs,它声明.run函数的回调是使用两个参数调用的,即errsummary

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

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

您需要为集合中的每个请求编写一个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);
});
于 2018-03-29T12:39:09.297 回答
3

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

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

于 2018-03-29T12:35:00.763 回答
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));

    });
});
于 2020-12-22T20:56:50.137 回答