如何为 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'
这是 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'