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

How to call global env variable for gulp protractor

这是 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);
                }
            );
    }
);

所以,在量角器测试 类 中,我可以获得 baseurl,例如

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

,

因为我设置在这里

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

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

来自控制台命令

gulp protractor --env l --suite logout

我可以在控制台输出中看到那个

argv.env

但我不能用量角器调用它。我试过了 browser.env 但没有用。我该怎么做?

我也用 yargs

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

量角器中没有 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'
}

};

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

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