2016-11-18 114 views
2

在我的场景中,我需要验证页面中是否存在10个对象。如何使黄瓜场景失败

如果任何对象不存在,那么该步骤应该失败,并且最终该方案也应该报告为失败,但脚本执行应该继续验证剩余的对象是否存在。

我知道scenario.getStatus()如果场景失败了,但我该如何设置场景的状态失败?重要的是脚本执行应该在之后继续。

回答

0

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

有一些关于添加特征来标记特定步骤以在故障后继续的讨论。 https://github.com/cucumber/cucumber/issues/79

还有一些其他的方法失败后,在这里继续通过场景步骤:continue running cucumber steps after a failure

+0

这可能是正确的,但缺少整体方法。原因在于,如果我想验证该部分中存在的所有对象,请在方案步骤之一中进行,则方案大纲不会有帮助。 – Uday

1

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

为了使场景失败,您只需要断言失败,无需设置场景的状态。如果断言失败,黄瓜会照顾到这一点。

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

针对JUnit,你可以使用ErrorCollector规则类 - http://junit.org/junit4/javadoc/4.12/org/junit/rules/ErrorCollector.htmlenter link description here黄瓜不支持@rule注释,你需要从该类继承并重写验证属性的修改改变公众场所的保护。创建新类的实例并添加断言。调用verify方法将开始验证。

0

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

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

+0

有没有一种方法可以独自使用黄瓜而不是QAF? – Uday