如何阻止量角器在失败时运行进一步的测试用例?

时间:2015-03-06 06:30:53

标签: javascript testing jasmine protractor end-to-end

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

4 个答案:

答案 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);
      });
   }
});

利润。