【问题标题】:retry failed mocha test重试失败的摩卡测试
【发布时间】:2014-10-16 21:48:21
【问题描述】:

我有一些要求要求多次重试 mocha 故障测试。有什么简单的方法/解决方法可以做到这一点?

我尝试了https://github.com/giggio/mocha-retry,但它似乎不适用于 Mocha 1.21.3:

  it (2, 'sample test', function(done) {
      expect(1).to.equal(2);
      done();
  });

mocha test/retry.js -g 'sample test' --ui mocha-retry

【问题讨论】:

  • 这有XY problem 的味道。为什么需要重试测试? (好吧,有一个“要求”,但为什么要求呢?)甚至 mocha-retry 的文档(顺便说一下有很多错别字;不会激发信心)也有一段关于你的测试应该如何工作的段落始终如一。
  • 嗯,团队希望首先关注一致的故障,通过减少由于我们面临的不稳定但失控的环境设置而导致的间歇性故障的噪音。

标签: javascript node.js testing mocha.js


【解决方案1】:
it(2, 'sample test', function(done) {
    this.retries(2); // pass the maximum no of retries
    expect(1).to.equal(2);
    done();
});

如果您的测试用例失败,它将再次重新执行相同的测试用例,直到达到最大重试次数或通过测试用例。 一旦您的测试用例通过,它将跳转到下一个测试用例。

【讨论】:

【解决方案2】:

有可能要求 mocha 在控制台中重试失败的测试:

mocha test/retry.js -g 'sample test' --retries 2

【讨论】:

    【解决方案3】:

    try{}catch 和递归

    var tries_threshold = 5;
    it(2, 'sample test', function(done) {
        var tries = 0;
        function actual_test() {
            expect(1).to.equal(2);
        }
        function test() {
            try {
                actual_test();
            } catch (err) {
                if (err && tries++ < tries_threshold)
                    test();
                else done(err);
            }
        }
        test();
    });
    

    try{}catch 将有助于防止错误冒泡,直到您想要它为止,因此您可以递归地继续尝试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 1970-01-01
      • 1970-01-01
      • 2019-09-07
      • 1970-01-01
      • 2017-07-29
      相关资源
      最近更新 更多