2017-03-09 74 views
1

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

回答

1

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

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

如果所有三种情况的故障触发都是常见的,则使用共同的先决条件步骤。例如Given the customer is authorised。然后简单地保留每个场景的前提条件。

如果失败的触发因素是环境因素,请在赛跑者中使用铃声测试或使用适当的@Before测试钩。例如LDAP或数据库可用。然后使用每个功能或场景来测试这个假设。

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

+1

谢谢马丁。实际上,这只能是一种情况,但这是一个很大的情况。所以我想我可以分开它。现在我意识到情景应该是独立的。现在我正在写一个大场景。非常感谢您的帮助。 – Neela

0

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

+0

谢谢约翰。现在我意识到Scenario应该是独立的。 – Neela