1

我正在使用 newman api 运行邮递员测试服。它按预期正确执行,但我想在文件中导出测试执行期间生成的环境变量,在命令行中可以使用--export-environment:

newman run collectionPreReq.json -e Environment.json -k --export-environment newmanExport.json 

同样,我正在编写 javascript 以获取由 collectionPreReq 导出的环境,但没有得到我正在寻找的东西,代码是

var newman = require('newman');

newman.run({
    collection: require('./collectionPreReq.json'),
    //reporters: 'cli',
    environment: require('./Environment.json'),
    insecure: true
}).on('start', function (err, args) {
    console.log('running a collection...');
}).on('done', function (err, summary) {
    if (err || summary.error) {
        console.error('collection run encountered an error.');
    }
    else {
        console.log('collection run completed.:');
        console.log("summary environment :");
        console.log(summary.environment);
    }
});

输出:

running a collection...
collection run completed.:
summary environment :
{ object: [Function], toJSON: [Function] }
4

3 回答 3

2

请尝试在 javascript 文件 中使用这个 newman 选项exportEnvironment: require('./Environment.json')

newman.run({
   collection: require('./collectionPreReq.json'),
   //reporters: 'cli',
   environment: require('./Environment.json'),
   exportEnvironment: require('./Environment.json'),
   insecure: true 
})....

当然,这个声明会起作用。

于 2017-11-04T12:26:13.060 回答
0

要控制台记录实际环境变量,您需要首先对 JSON 进行字符串化:.....

.on('done', function (err, summary) {
if (err || summary.error) {
console.error('collection run encountered an error.');
}
else {
console.log('collection run completed.:');
console.log("summary environment :");
console.log(JSON.stringify(summary.environment))
}
});
于 2019-09-16T16:16:30.853 回答
0

根据NodeJS 文档不可能。

process.env 属性返回一个包含用户环境的对象。请参见环境 (7)。

此对象的示例如下所示:

{ 
  TERM: 'xterm-256color', 
  SHELL: '/usr/local/bin/bash', 
  USER: 'maciej', 
  PATH: '~/.bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin', 
  PWD: '/Users/maciej', 
  EDITOR: 'vim', 
  SHLVL: '1', 
  HOME: '/Users/maciej',   
  LOGNAME: 'maciej',   
  _: '/usr/local/bin/node' 
}

可以修改这个对象,但是这样的修改不会反映在 Node.js 进程之外。换句话说,下面的例子是行不通的:

$ node -e 'process.env.foo = "bar"' && echo $foo

于 2016-10-08T07:37:52.320 回答