我正在寻找一种方法将测试用例或测试套件分类为不同的测试环境,如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部分中使用时阻止整个测试的东西,或者是对整个测试套件进行分类的方法。任何想法如何做到这一点?
答案 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...
}