【问题标题】:Is it possible to create or update postman test scripts or variables when running newman from node js?从 node js 运行 newman 时是否可以创建或更新 postman 测试脚本或变量?
【发布时间】:2021-03-15 09:15:44
【问题描述】:

我的邮递员收藏有多个邮递电话,它们返回 pdf 作为响应。 使用 newman & node js 我正在运行将 pdf 解析为文本的集合。我想将此文本放入环境变量或测试脚本中,以便执行进一步检查。

我正在尝试这样做,以便整个请求、响应和验证都发生在同一个请求中。 (而不是https://community.postman.com/t/pdf-parsing-with-postman-and-express-js/17938

我注意到可以使用以下脚本更新请求标头。同样,是否可以在执行后更新或设置变量或测试脚本(例如在 request 或 beforeTest 或 beforeScript 事件中)..?

            const newman = require('newman');
            PostmanHeader = require('postman-collection').Header;

            newman.run({
                    collection: require('./myCollection.json'),
                    reporters: 'cli'        

                })
                .on('beforeItem', (error, data) => {
                        console.log("BeforeUpdate------------------");
                        console.log(data.item.request.headers.members);

                        var myHeaderVal = 'Test123';
                        additionalHeader = new PostmanHeader({
                            key: 'CustomHeader',
                            value: myHeaderVal
                        });
                        data.item.request.headers.members.push(additionalHeader);
                        console.log("Updated------------------");
                        console.log(data.item.request.headers.members);
                    }

                )

谢谢

【问题讨论】:

    标签: node.js api automated-tests postman newman


    【解决方案1】:
    const newman = require('newman'); // require newman in your project
    
    // call newman.run to pass `options` object and wait for callback
    newman.run({
        collection: require('./test.postman_collection.json'),
        reporters: "cli",
    
    }, function(err) {
        if (err) {
            throw err;
        }
        console.log('collection run complete!');
    }).on('beforeTest', (error, data) => {
        console.log("BeforeUpdate------------------");
        data.events[0].script.exec = ["pm.test(\"Status code is 500\", function () {\r", "    pm.response.to.have.status(00);\r", "});"];
    
    });
    

    您可以使用 beforeScript 或 beforeTest 访问和修改测试脚本

    【讨论】:

    • 感谢您的帮助。注意到如果有任何集合级别脚本,data.events 的条目不止一个,因此添加了一个循环来解析。
    猜你喜欢
    • 1970-01-01
    • 2017-11-03
    • 2019-01-02
    • 1970-01-01
    • 2019-01-18
    • 2015-10-12
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多