微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何根据不同的规范文件在量角器测试中动态设置baseurl?

如何解决如何根据不同的规范文件在量角器测试中动态设置baseurl?

我正在开发一个服务于 2 个品牌的 Angular 应用程序 (V9)。在编写 e2e 测试时,我遇到了一个问题。每个品牌都有一个单独的网址,例如,brand1:“https://qa1.brandX.com”和brand2:“https://qa1.brandY.com”。

这是 protractor.conf.js 的代码

// Protractor configuration file,see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts

const { SpecReporter } = require('jasmine-spec-reporter');

exports.config = {
  sauceUser: 'username',sauceKey: 'key',allScriptsTimeout:20000,specs: [
    './src/**/*.e2e-spec.ts'
  ],multiCapabilities: [
    {
      browserName: 'chrome',version: 'latest',platform: 'Windows 10',name: 'chrome test demo','tunnel-identifier': 'getTunnel'',/**
       * If this is set to be true,specs will be sharded by file (i.e. all
       * files to be run by this set of capabilities will run in parallel).
       * Default is false.
       */
      shardTestFiles: true,/**
       * Maximum number of browser instances that can run in parallel for this
       * set of capabilities. This is only needed if shardTestFiles is true.
       * Default is 1.
       */
      maxInstances: 1,},{
      browserName: 'firefox',name: 'demo-protractor-jasmine-ts','tunnel-identifier': 'getTunnel',{
      browserName: 'MicrosoftEdge',name: 'Edge test test',}
  ],directConnect: false,framework: 'jasmine',useAllAngular2AppRoots: true,jasmineNodeOpts: {
    showColors: true,defaultTimeoutInterval: 30000,print: function() {}
  },onPrepare() {
    browser.baseUrl = 'https://qa1.brandX.com';
    require('ts-node').register({
      project: require('path').join(__dirname,'./tsconfig.e2e.json')
    });
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
  }
};

这仅适用于我在单个 e2e 文件中包含一组测试的情况,即 app.e2e-spec.ts(对于品牌 X)。如果我想在brandY.e2e-spec.ts 中为brandY 运行另一组测试怎么办。 我应该如何为这组测试设置 baseurl?我试过了,但它总是在 https://qa1.brandX.com

上运行测试

知道如何解决这个问题吗?

解决方法

为什么不直接使用局部变量

// brandX.e2e-spec.ts
let baseUrl = 'https://qa1.brandX.com'

describe('X',() => {

    it('X',async () => {
        await browser.get(baseUrl)
    });
})

// brandY.e2e-spec.ts
let baseUrl = 'https://qa1.brandY.com'

describe('Y',() => {

    it('Y',async () => {
        await browser.get(baseUrl)
    });
})

,

在运行测试时,您可以在测试中将基本 URL 作为参数传递。

.\node_modules\.bin\protractor --params.baseurl = <url here>

你可以调用它

await browser.get(browser.params.baseurl);

或者另一种方法是设置一个详细说明您的环境配置的 json 文件。导入该 json 文件并使用它

const json = require('<path of your json file>');   

await browser.get(json.brandproperties[brandName].baseurl);

json 文件示例

{
 "brandproperties" : {
   "brandX" : {
      "baseurl" : "https://sampleX.com"
   },"brandY" : {
      "baseurl" : "https://sampleY.com" 
   }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。