代码之家  ›  专栏  ›  技术社区  ›  jissay

如何获取--suite参数?

  •  1
  • jissay  · 技术社区  · 7 年前

    我想 --suite 参数E、 g.:

    protractor conf.js --suite=foo
    

    我想 'foo' 在我的测试案例中。E、 g.:

    it ('Sent parameter', function() {
        consol.log('Suite is:' + ...);
    }
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   Sudharsan Selvaraj    7 年前

    您可以使用

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

    参考 http://www.protractortest.org/#/api?view=ProtractorBrowser.prototype.getProcessedConfig 有关附加信息。

        2
  •  1
  •   yong    7 年前

    您可以使用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。参数。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。参数。js公司 进程():

    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;
            }
        }
    };
    

    //命令行
    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