对Jasmine或Mocha测试套件或案例进行分类,以运行所有测试的子集

时间:2018-05-08 11:16:28

标签: jasmine protractor mocha subset cypress

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

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

我用它创造了这样的环境:

preconditions.js

  export function onlyLocal () {

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

还有一些功能,如登录(用户)和登出()

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*/


    })
  })
})

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

1 个答案:

答案 0 :(得分: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...
}