Ruby Cucumber:使某些异常返回pending而不是fail。适用于CI

时间:2017-03-14 16:35:10

标签: ruby rspec cucumber

通常当我使用Cucumber和其他工具来驱动浏览器并进行端到端测试时,我会考虑套件中的噪声(我们将其宽松地定义为失败的测试,可能实际上并未指出应用程序代码编程中的问题)为了正常,套房由我们的团队在我们为此目的制作和维护的自定义工具的帮助下进行分类。

我想考虑我们运行的一种新类型的套件,如果每次测试都满足一个重要的最终断言,并且如果环境问题或测试代码本身存在问题,则将结果标记为不确定(或待定是好的)它使测试失败。测试套件中的故障只应在测试进入最终断言(每次冒烟测试的时间点)并且未能达到预期时才会发生。

这种努力与我们团队通常所做的不同,促使我们也考虑到我们应该记录“警告”,我们通常会根据Rspec的期望断言并且失败,现在的关键区别不要抛出异常,而是要有一个启发并通知探索性测试的日志。

所以,一套子弹针对不耐烦的人提出了问题:

  • 如何确保将某些异常转换为待处理结果?我的想法在钩子

    中与此类似
    Around('@end_to_end_ci') do |scenario, block|
      begin
        block.call
      rescue Watir::Exception, PageObject::Exception => e #will this rescue all Watir and pageobject exceptions? Add more as needed...
        pending("Test results inconclusive, non-buildbreaking error caught.\nStack trace: #{e}")
      end
    end
    

谢谢!

请注意,我不是简单地询问如何使黄瓜方案返回待定。我说的是更普遍的需要,只能在构建破坏的情况下失败,并且能够选择哪些断言和异常被视为失败,哪些被视为警告。

0 个答案:

没有答案