【发布时间】:2015-03-06 06:30:52
【问题描述】:
如果测试用例在量角器中失败,有没有办法退出测试套件并停止执行进一步的测试用例?
【问题讨论】:
-
您在量角器中使用的是哪个测试运行器框架? (“茉莉花”是默认值)
标签: javascript testing jasmine protractor end-to-end
如果测试用例在量角器中失败,有没有办法退出测试套件并停止执行进一步的测试用例?
【问题讨论】:
标签: javascript testing jasmine protractor end-to-end
如果是jasmine 测试框架,您不是第一个询问它的人。
在第一次失败后退出有相关的公开讨论/问题,--fail-fast 选项:
长话短说,这是一个未解决的问题,有一天jasmine 会内置该功能。目前,使用第三方jasmine-bail-fast 模块。
除此之外,还有一个方便的realtimeFailure jasmine 设置。如果您将其设置为true,它不会使整个测试运行失败,但它会实时显示错误 - 在发生后立即显示 - 这可能会涵盖您的用例。设置在jasmineNodeOpts:
exports.config = {
seleniumAddress: 'http://127.0.0.1:4444/wd/hub',
...
jasmineNodeOpts: {
realtimeFailure: true
}
}
【讨论】:
stopSpecOnExpectationFailure 被放入配置中。但是,我在我的 conf.js 文件中尝试了exports.config = { ..., jasmineNodeOpts: { stopSpecOnExpectationFailure: true } },但这对我不起作用。
这是我在 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()
});
}
};
});
}
};
【讨论】:
jasmine-bail-fast 在我的情况下不起作用。不确定是不是因为与我的其他报告插件有冲突。
如果有人遇到同样的问题。你可以试试protractor-fast-fail
import failFast from 'protractor-fail-fast';
exports.config = {
// if import statement doesn't work, use this instead of import for older versions of node
// plugins: [{
// package: 'protractor-fail-fast'
// }],
onPrepare: function() {
jasmine.getEnv().addReporter(failFast.init());
},
afterLaunch: function() {
failFast.clean();
}
}
对我来说效果很好。
编辑:在代码 sn-p 中添加 import 语句以反映 projactor-fast-fail 的自述文件
【讨论】:
import failFast from 'protractor-fail-fast';。 (最好不要只从 stackoverflow 复制代码,而是尝试将其用作参考)
您不需要所有这些第三方插件。使用原生process.exit()。
代码示例:
it("test", function()
{
...
if(isExit)
{
browser.driver.close().then(function()
{
process.exit(1);
});
}
});
利润。
【讨论】: