Cucumber 场景的正确格式

Correct format for Cucumber scenarios

我在一本 Cucumber 书中读到,Cucumber 功能场景的格式应该是 Gherkin 场景的格式,即: 给定-当-然后

为了简化事情,让我们省略场景中可能出现的 And 元素。

在我现在的项目中经常看到这样定义的几个场景: 情景十 给出-然后-当时-然后

这个格式正确吗? Cucumber 接受了,但这是个好习惯吗?

GivenWhenThen关键字实际上是同一个方法的别名,所以可以互换使用。 Gherkin只是提供更多人类可读的钩子来编写场景。

就场景中的 Given/Then/When/Then 序列而言,这会起作用,但它似乎有点不寻常。我知道你试图让你的问题简单化,但这听起来像是使用 AndBut 的可能情况。例如:Given/And/When/ThenGiven/But/When/Then。 FWIW,如果你想避免Given/When/Then/And/But

的语义体操,你可以使用*开始一个步骤

我基本同意@orde,但我觉得有必要将这些条款用于特定目的。对我来说,给定始终是设置测试的一个步骤。这是一个人开始的情况。我建议使用不运行被测软件的步骤定义。

Given I am a registered user
And I am logged in
And I have a product in my shopping cart

什么时候触发测试。它可以不止一个步骤,但这很混乱。

When I delete the item from my cart

然后是验证预期结果。我用它来检查什么时候的结果。

Then there are not items in my shopping cart

我认为不同的术语可以帮助 reader 了解哪个步骤用于哪个目的,而无需阅读步骤定义中的代码。