将 Jasmine 或 Mocha 测试套件或案例分类为 运行 所有测试的子集

Categorize Jasmine or Mocha tests suites or cases to run a subset of all tests

我正在寻找一种方法来将测试用例或测试套件分类为不同的测试环境,如本地主机、模拟阶段或预直播。我想使用这些类别将所有测试放入可以在需要时一次性 运行 的子组。

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

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

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


    })
  })
})

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

在量角器配置中,您可以定义 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...
}