如何在黄瓜方案中失败

时间:2016-11-18 12:07:08

标签: cucumber cucumber-jvm

在我的场景中,我需要验证页面中是否存在10个对象。

如果任何对象不存在,则该步骤应该失败,最终该场景也应报告为失败,但脚本执行应继续验证剩余对象是否存在。

我知道scenario.getStatus()如果方案失败了,但我怎样才能将方案的状态设置为失败?重要的是,脚本执行应该在之后继续。

3 个答案:

答案 0 :(得分:1)

根据您使用junit或testng的测试框架,您可以使用软断言的概念。基本上它会收集所有错误并在出现问题时抛出断言错误。

要使方案失败,您只需要断言失败,无需设置方案的状态。如果断言失败,黄瓜会处理这个问题。

对于testng,您可以使用SoftAssert类 - http://testng.org/javadocs/org/testng/asserts/SoftAssert.html您将获得大量的教程。调用doAssert将触发所有存储断言的验证。

对于junit,您可以使用ErrorCollector Rule类 - http://junit.org/junit4/javadoc/4.12/org/junit/rules/ErrorCollector.html enter link description here由于黄瓜不支持@Rule注释,因此您需要从此类继承并覆盖verify属性以将其修饰符更改为public而不是protected。创建新类的实例并添加断言。致电verify方法将开始验证。

答案 1 :(得分:0)

在步骤失败后继续执行步骤并不是一个好主意,因为步骤失败会使世界出现不变的违规行为。更好的策略是增加场景的粒度。而不是写几个"然后"语句,使用示例列表分别测试每个后置条件。有时,场景大纲和示例列表可以合并类似的故事。 https://cucumber.io/docs/reference#scenario-outline

有一些关于添加功能以标记某些步骤以在失败后继续的讨论。 https://github.com/cucumber/cucumber/issues/79

还有一些其他方法可以在失败后继续完成方案步骤:continue running cucumber steps after a failure

答案 2 :(得分:0)

QAF提供断言和验证概念,其中断言失败场景以失败状态退出,并且在验证场景继续下一步的情况下,如果一个或多个验证失败,则步骤/场景的最终状态失败。

您还可以使用step listener设置步骤状态失败,从而导致测试失败。通过使用步骤侦听器,您还可以通过将异常转换为验证失败来继续甚至步骤失败。