Sam*_*r K 8 protractor angular2-testing angular2-cli angular
我是新来的Protractor.我开发了几个测试用例来完成端到端测试.这些测试案例工程,我们有所有3个不同的环境罚款:dev,testing和production.  
但是我需要在测试用例中更改Angular应用程序URL,以确定需要进行测试的环境(因为URL因环境而异).
我正在使用Angular CLI命令ng e2e来运行测试.现在我的问题是
1)是否可以传递参数ng e2e,以便基于参数,可以在测试用例内动态设置URL?
2)是否有必要protractor全局安装,因为Angular CLI使用protractorunder node_modules?创建角度应用程序?
在我的项目设置中,Protractor版本是5.1.2,Angular CLI版本是1.2.0.
以下是Protract配置
exports.config = {
  allScriptsTimeout: 11000,
  specs: [
     './e2e/**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function() {}
  },
  useAllAngular2AppRoots: true,
  beforeLaunch: function() {
    require('ts-node').register({
        project: 'e2e'
    });
  },
  onPrepare: function() {
    jasmine.getEnv().addReporter(new SpecReporter());
  }
};
我尝试了几个例子,比如params:[env:dev]在命令行中添加和传递参数ng e2e params.env=test,但是我总是得到默认值,而不是从命令行传递的值.
我也试过@cnishina的答案,但是console.log process.env没有需要的细节.
我的建议是尝试使用环境变量并在 Protractor 配置文件中的环境之间进行切换。你可以export TEST_ENV=dev然后有条件browser.baseUrl
量角器配置文件
var baseUrl = '';
if (process.env.TEST_ENV === 'dev') {
  baseUrl = 'http://devurl';
} else if (process.env.TEST_ENV === 'stage') {
  baseUrl = 'http://stageurl';
} else {
  baseUrl = 'http://produrl';
}
exports.config = {
  baseUrl: baseUrl
}
有关使用配置文件的更好具体示例process.env,请参阅测试 Angular 应用程序,第 11 章 GitHub 存储库。
您还可以内联更改baseUrl参数;但是,如果您要根据测试环境更改多个变量,我建议使用环境变量:
ng e2e {protractor config file} --baseUrl='http://devurl'
Protractor不需要全局安装。建议使用从 node_modules 目录本地安装的版本。这将为其他开发人员提供可重复的步骤,使用相同的 Protractor 依赖项来运行 e2e 测试。或者,如果您使用的是全局安装的版本,您现在必须指示其他开发人员使用特定的 Protractor 版本。
| 归档时间: | 
 | 
| 查看次数: | 3220 次 | 
| 最近记录: |