仅当第一个场景通过JBehave时才运行第二个场景

时间:2017-03-09 14:38:53

标签: selenium-webdriver automated-tests jbehave serenity-bdd

我正在使用JBehave硒和宁静,我有3个场景。我想逐个运行场景。如果方案通过,则运行第二个方案。如果方案二经过,则运行第三个方案。如果方案1失败,那么它不应该运行任何其他方案。我如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

您的场景应该彼此独立,并且在一种情况下完全代表一个目标。在BDD中链接场景是一种反模式,应该避免使用。

接下来的问题是为什么要在功能测试中应用失败快速策略。需要重新考虑这一点,以确定这是否适合您的情况。虽然快速失败是部署管道的标准,但它通常不是自动功能测试的好方法,特别是在使用BDD进行功能驱动开发期间。对于自动功能测试而言,通常是一种更好的方法来实现故障安全策略。我建议您完成所有测试。这通常会提供更多价值。它将避免早期失败的测试掩盖可能更严重的失败测试或测试更重要或有价值的功能。全面的测试报告可以优先整改工作。

如果所有三种情况的失败触发都很常见,那么请使用常见的预条件步骤。例如Given the customer is authorised。然后简单地用这个前提条件保护每个场景。

如果失败的触发器是环境因素,那么在跑步者中使用铃声天气测试或使用相应的@Before测试钩子。例如LDAP或数据库可用。然后使用每个功能或方案测试此假设。

如果这些都不适用,您需要使用您正在使用的方案的一些示例来详细说明您的要求。

答案 1 :(得分:0)

您可能会使用受损的异常,但JBehave(以及一般的BDD方案)实际上并不打算以这种方式使用 - 每个方案应该是独立的。