如何获得--suite参数?

时间:2018-03-27 07:05:19

标签: protractor jasmine2.0

我想获得--suite参数。 E.g:

protractor conf.js --suite=foo

我想在我的测试用例中获得'foo'。 E.g:

it ('Sent parameter', function() {
    consol.log('Suite is:' + ...);
}

2 个答案:

答案 0 :(得分:1)

您可以使用

browser.getProcessedConfig().then(function(config){ 
       console.log(config.suite)
});

请参阅http://www.protractortest.org/#/api?view=ProtractorBrowser.prototype.getProcessedConfig了解更多信息。

答案 1 :(得分:0)

您可以使用Nodejs'process模块通过process.argv获取所有命令参数。

我有一个cli.params.js来处理命令参数并返回一个对象。

// cli.params.js
/**
 * get parameters value from command line,
 */
var default_processor = function(value) {
    return value ? value.trim() : value;
};

exports.process = function(options) {
    var params = options && options.default || {};
    var processor = options && options.processor || {};

    process.argv.slice(3).forEach(function(arg) {
        var flag = arg.split('=')[0];
        var value = arg.split('=')[1];
        var name = flag.replace('--', '');

        if (processor[name]) {
            processor[name](value, params);
        } else {
            params[name] = default_processor(value);
        }
    });

    return params;
};

如何使用cli.params.js

// protractor conf.js
var params = require('./cli.params.js').process();
console.log('suite: '+ params.suite) // smoke
console.log('env: '+ params.env) // dev
console.log('abc: '+ params.abc) // 123

// if you want to access params across scripts, you can make it as global
global.params = params

exports.config = {

    capabilities: {},

    seleniumAddress: '',

    framework: 'custom',
    ...
};

// spec.js
it ('Sent parameter', function() {
    console.log('Suite is:' + global.params.suite);
});

cmd行中的传入参数:
 protractor conf.js --suite=smoke --env=dev --abc=123

将选项传递到cli.params.js process()的示例:

var options= {
    // set default/omit value
    default: {
        device: 'desktop',
        browser: 'chrome'
    },
    // set customize processor for certain argument, rather than the default processor
    // defined in cli.params.js
    processor: {
        'cucumberOpts.tags': function(value, params) {
            params.tags = value;
        }
    }
};

// cmd line
protractor conf.js --suite=smoke --cucumberOpts.tags=@smoke

var params = require('./cli.params.js').process(options);
console.log('suite: '+ params.suite) // smoke
console.log('device: '+ params.device) // desktop, even not specify in cmd line
console.log('browser: '+ params.browser) // chrome, even not specify in cmd line
console.log('tags : '+ params.tags ) // @smoke, 
// with the customize processor in options, 
// we can use params.tags, rather than use params['cucumberOpts.tags'] to get tags values