Cucumber 场景的正确格式
Correct format for Cucumber scenarios
我在一本 Cucumber 书中读到,Cucumber 功能场景的格式应该是 Gherkin 场景的格式,即:
给定-当-然后
为了简化事情,让我们省略场景中可能出现的 And 元素。
在我现在的项目中经常看到这样定义的几个场景:
情景十
给出-然后-当时-然后
这个格式正确吗? Cucumber 接受了,但这是个好习惯吗?
Given
、When
、Then
关键字实际上是同一个方法的别名,所以可以互换使用。 Gherkin
只是提供更多人类可读的钩子来编写场景。
就场景中的 Given/Then/When/Then
序列而言,这会起作用,但它似乎有点不寻常。我知道你试图让你的问题简单化,但这听起来像是使用 And
或 But
的可能情况。例如:Given/And/When/Then
或 Given/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 了解哪个步骤用于哪个目的,而无需阅读步骤定义中的代码。
我在一本 Cucumber 书中读到,Cucumber 功能场景的格式应该是 Gherkin 场景的格式,即: 给定-当-然后
为了简化事情,让我们省略场景中可能出现的 And 元素。
在我现在的项目中经常看到这样定义的几个场景: 情景十 给出-然后-当时-然后
这个格式正确吗? Cucumber 接受了,但这是个好习惯吗?
Given
、When
、Then
关键字实际上是同一个方法的别名,所以可以互换使用。 Gherkin
只是提供更多人类可读的钩子来编写场景。
就场景中的 Given/Then/When/Then
序列而言,这会起作用,但它似乎有点不寻常。我知道你试图让你的问题简单化,但这听起来像是使用 And
或 But
的可能情况。例如:Given/And/When/Then
或 Given/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 了解哪个步骤用于哪个目的,而无需阅读步骤定义中的代码。