2014-10-16 242 views
6

我有一些要求多次重试摩卡失败测试。有没有简单的方法/解决方法来做到这一点?重试失败摩卡测试

我试过https://github.com/giggio/mocha-retry,但它似乎不为我用摩卡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

+1

这有[XY问题]的气味(http://meta.stackexchange.com/a/66378/241526)。为什么你需要重试你的测试? (好吧,有一个“需求需求”,但为什么要求?)即使是摩卡重试的文档(其中有很多错别字;并不能激发人们的信心)有一段关于你的测试应该如何工作的段落一致。 – Louis 2014-10-16 22:09:50

+1

好吧,团队希望首先关注一致性故障,通过减少由于我们面临的不稳定但失控的环境设置造成的间歇性故障的噪音。 – ccy 2014-10-16 22:26:34

回答

0

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将有助于防止冒着错误直到你想要它,所以让你递归地继续尝试。

4
it (2, 'sample test', function(done) { 
     this.retries(2); pass the maximum no of retries 
     expect(1).to.equal(2); 
     done(); 
    }); 

// this.retries(Max no of retries);

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

+0

注意:重试现在是摩卡核心的一部分:http://mochajs.org/#retry-tests – redgeoff 2017-04-26 17:49:21

相关问题