【问题标题】:How to stop protractor from running further testcases on failure?如何阻止量角器在失败时运行进一步的测试用例?
【发布时间】:2015-03-06 06:30:52
【问题描述】:

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

【问题讨论】:

  • 您在量角器中使用的是哪个测试运行器框架? (“茉莉花”是默认值)

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


【解决方案1】:

如果是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
    }
}

【讨论】:

【解决方案2】:

这是我在 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()
                    });
                }
            };
        });
    }
};

【讨论】:

  • 我只成功了你的版本。 “protractor-fail-fast”和“realtimeFailure: true”对我不起作用。
  • 它不工作 - 你能用 thi 给一些示例描述块吗
【解决方案3】:

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 的自述文件

【讨论】:

  • 这里也一样,对我来说 bail-fast 也不起作用,但 protractor-fast-fail 工作得很好。
  • 您好,我收到 ReferenceError: failFast 未定义
  • @PDHide 检查他们的 npm/github 页面。插件导入似乎已更改。在文件开头添加此行 import failFast from 'protractor-fail-fast';(最好不要只从 stackoverflow 复制代码,而是尝试将其用作参考)
  • @LinhPham 我正在使用 JavaScript,并从显示语法错误导入 fsilfsst
【解决方案4】:

您不需要所有这些第三方插件。使用原生process.exit()

代码示例:

it("test", function()
{
   ...
   if(isExit)
   {
      browser.driver.close().then(function()
      {
         process.exit(1);
      });
   }
});

利润。

【讨论】:

  • 这是 100% 正确的退出方式吗? IE。这会调用所有的茉莉花和量角器清理功能,所以一切都正常关闭了吗?
  • 不,不会。它只是停止服务器进程
猜你喜欢
  • 2017-04-29
  • 2019-10-06
  • 2019-05-13
  • 1970-01-01
  • 2011-02-28
  • 2019-09-02
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多