如果测试用例在量角器中失败,是否有办法退出测试套件并停止执行进一步的测试用例?
答案 0 :(得分:17)
如果是jasmine
测试框架,您不是第一个询问它的人。
第一次失败后退出有相关公开讨论/问题,--fail-fast
选项:
长话短说,这是一个开放的问题,有一天jasmine
会内置功能。目前,请使用第三方jasmine-bail-fast
模块。
除此之外,还有一个方便的realtimeFailure
茉莉花设置。如果你将它设置为true
,它将不会在整个测试运行中失败,但它会在实时显示错误 - 发生后立即 - 这可能涵盖您的用例。将其设置为jasmineNodeOpts
:
exports.config = {
seleniumAddress: 'http://127.0.0.1:4444/wd/hub',
...
jasmineNodeOpts: {
realtimeFailure: true
}
}
答案 1 :(得分:8)
jasmine-bail-fast
在我的案例中不起作用。不确定是不是因为与我的其他报告插件有些冲突。
如果有人遇到同样的问题。您可以尝试protractor-fast-fail
exports.config = {
plugins: [{
package: 'protractor-fail-fast'
}],
onPrepare: function() {
jasmine.getEnv().addReporter(failFast.init());
},
afterLaunch: function() {
failFast.clean();
}
}
对我来说工作得非常好。
答案 2 :(得分:7)
这是我使用Jasmine 2和Protractor跳过首次失败测试的解决方案。 希望它有所帮助。
exports.config = {
onPrepare: function () {
//skip tests after first fail
var specs = [];
var orgSpecFilter = jasmine.getEnv().specFilter;
jasmine.getEnv().specFilter = function (spec) {
specs.push(spec);
return orgSpecFilter(spec);
};
jasmine.getEnv().addReporter(new function () {
this.specDone = function (result) {
if (result.failedExpectations.length > 0) {
specs.forEach(function (spec) {
spec.disable()
});
}
};
});
}
};
答案 3 :(得分:3)
你不需要所有这些第三方插件。使用原生process.exit()
。
代码示例:
it("test", function()
{
...
if(isExit)
{
browser.driver.close().then(function()
{
process.exit(1);
});
}
});
利润。