如何为gulp量角器调用全局env变量

时间:2016-12-19 09:47:50

标签: protractor yargs

这是gulpfile:

gulp.task(
    'protractor', function () {
        var configObj = {
            configFile: config.test + 'protractor.conf.js'
        };
        configObj['args'] =[];//to be able to add multiple parameters

        if (argv.suite) {
            configObj['args'].push (
                '--suite',
                argv.suite
            );
        }

        if (argv.env) {

            if(argv.env.includes("q")){//qa
                argv.baseUrl = "http://xx.qa.yy.com:8080";
            }
            else{//prod
                if(argv.env.includes("p")){
                    argv.baseUrl = "https://xx.yy.com";
                }
                else{//local
                    argv.baseUrl = "localhost:8080";
                }
            }

            configObj['args'] .push(
                '--baseUrl',
                argv.baseUrl
            );
        }
        return gulp.src([])
            .pipe(plumber({errorHandler: handleErrors}))
            .pipe(protractor(configObj))
            .on(
                'error', function () {
                    gutil.log('E2E Tests failed');
                    process.exit(1);
                }
            );
    }
);

所以,在量角器测试类中,我可以用exurle

获得baseurl
 this.getBaseUrl = function () {
    return browser.baseUrl;
};

因为我在这里设置了

            configObj['args'] .push(
                '--baseUrl',
                argv.baseUrl
            );

但我无法获得环境。它设置在这里

来自控制台命令

gulp protractor --env l --suite logout

我可以在consloeoutput中看到

argv.env

但是我不能从量角器那里打电话。我试过browser.env 但没有奏效。我怎么能这样做?

我也使用yargs

var argv = require('yargs')//setting default enviroment to qa for testing
    .default({ env : 'qa' })
    .argv;

1 个答案:

答案 0 :(得分:4)

量角器中没有env全局变量或命令行选项,您必须使用params将其作为参数传递。你可以这样做 -

 if (argv.params.env) {

        if(argv.params.env.includes("q")){//qa
            argv.baseUrl = "http://xx.qa.yy.com:8080";
        }
        else{//prod
            if(argv.params.env.includes("p")){
                argv.baseUrl = "https://xx.yy.com";
            }
            else{//local
                argv.baseUrl = "localhost:8080";
            }
        }

现在从控制台命令可以调用它

gulp protractor --params.env 'test' --suite logout

您也可以拨打browser.params.env

来访问它

您始终可以在配置文件中的量角器中设置全局变量:

exports.config = {
//other config options

params: {
    env: 'qa'
}

};

并通过命令行将值传递给全局变量as -

protractor conf.js --params.env 'dev'