【问题标题】:Categorize Jasmine or Mocha tests suites or cases to run a subset of all tests对 Jasmine 或 Mocha 测试套件或案例进行分类以运行所有测试的子集
【发布时间】:2018-05-08 11:16:28
【问题描述】:

我正在寻找一种方法来将测试用例或测试套件分类为不同的测试环境,例如 localhost、mock-stage 或 prelive。我想使用这些类别将所有测试放入可以在需要时一次性运行的子组中。

到目前为止,我发现的只是 skip();摩卡中的功能。

我用它来创建这样的环境:

preconditions.js

  export function onlyLocal () {

  if (type != "local" ) {
    this.test.parent.pending = true;
      this.skip();
  }
}

加上一些函数,如 login(user) 和 logout()

some_spec.js

import * as logins from './preconditions';


describe('This runs only on localhost', function () {

  context('Some Test', function () {

    beforeEach(function () {
      preconditions.onlyLocal()
      preconditions.login('user1')

    })

    afterEach(function () {

      preconditions.onlyLocal()
      preconditions.logout()
    })


    it('Some test that only runs local', function () {
      preconditions.onlyLocal();
      /*test stuff here*/


    })
  })
})

这很糟糕,必须在 beforeeach、aftereach 和测试本身中完成。 我想要的是在 beforeach 部分中使用时会阻止整个测试的东西,或者是一种对整个测试套件进行分类的方法。任何想法如何做到这一点?

【问题讨论】:

    标签: jasmine protractor mocha.js subset cypress


    【解决方案1】:

    在量角器配置中,您可以定义suites。您可以在配置之外设置一些文件,并根据它们将运行的环境在套件中放置不同的测试。

    例子:

    //suite.localhost.js
    exports.suites {
      login: 'login.spec.js',
      smoke: ['smoke1.spec.js', 'smoke2.spec.js']
    };
    
    //suite.mock-stage.js
    exports.suites {
      login: 'login.spec.js',
      smoke: ['some-other-smoke.spec.js', 'another-smoke.spec.js' ]
    }
    

    这样,您的所有套房都将按环境分类。现在,为了运行它们,您需要传入一个环境标志。假设您使用params.env 作为您的标志。你可以像这样从命令行运行它们

    protractor conf.js --params.env=localhost --suite smoke
    

    现在在您的onPrepare 中,您可以访问此环境标志,并且可以根据传入的标志定义套件。

    onPrepare: function() {
      switch(browser.params.env)
        case 'localhost':
          browser.suites = require('suite.localhost').suites;
          break;
        case 'mock-stage':
          browser.suites = require('suite.mock-stage').suites;
        //and so on...
    }
    

    【讨论】:

    • 非常感谢,现在我知道我可以阅读哪些文档来进一步了解!我想可以将文件放在许多套件中,不是吗?有许多测试可以在所有级别上运行,并且只有一个不同的登录过程,可以通过基于标志的简单 if 函数进行更改。
    • 是的,您可以将同一个文件放入任意数量的套件中。另外,我对browser.params 做了同样的事情,这样我的登录凭据和我使用的其他全局变量也可以按环境导入。
    猜你喜欢
    • 2012-07-10
    • 2018-11-02
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多