如何阻止量角器在失败时运行更多的测试用例?

Ama*_*pta 22 javascript testing end-to-end jasmine protractor

如果测量用例在量角器中失败,是否有办法退出测试套件并停止执行进一步的测试用例?

ale*_*cxe 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
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Machtyn请你创建一个单独的问题让我们看看它是否内置现在并且有效?谢谢! (2认同)

Lin*_*ham 9

jasmine-bail-fast在我的情况下不起作用.不确定是不是因为与我的其他报告插件有些冲突.

如果有人遇到同样的问题.您可以尝试量角器快速失败

exports.config = {
  plugins: [{
    package: 'protractor-fail-fast'
  }],

  onPrepare: function() {
    jasmine.getEnv().addReporter(failFast.init());
  },

  afterLaunch: function() {
    failFast.clean(); 
  }  
}
Run Code Online (Sandbox Code Playgroud)

对我来说工作得很好.

  • 同样在这里,对我来说,保释快速也没有用,但量角器 - 快速失败工作得很好. (2认同)

小智 9

这是我使用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()
                    });
                }
            };
        });
    }
};
Run Code Online (Sandbox Code Playgroud)