为"给定"和"然后"步骤定义相同的短语

Dra*_*Fax 5 cucumber aruba

我在这里寻找建议或最佳实践.

有时我想使用不同的介词为2个不同的步骤提供相同的正则表达式/短语.我经常看到的案例是一个既有意义Given也有Then步骤有用的短语.

Given用于执行和操作的步骤(设置测试状态).并Then用于验证状态但不执行操作的步骤.我经常发现相同的措词适合两者.这样的短语的一个例子是"我登录了"

这是一个人为的设想

Scenario: Login is saved between sessions.
    Given I am logged in
    When I exit the application
    And I start the application
    Then I am logged in
Run Code Online (Sandbox Code Playgroud)

当然,这在步骤定义中不起作用,因为黄瓜不区分步骤谓词.

我已经玩弄了对所有碰撞Then步骤添加"验证" ,或者为所有重复Given步骤添加"那个" .但没有什么是正确的.

Given that I am logged in.
...
Then verify I am logged in.
Run Code Online (Sandbox Code Playgroud)

它当然有效,但我觉得我错过了一些不需要为我的大多数步骤都使用相同的"扩展谓词"的东西.

sni*_*ikt 1

我也有同样的问题,这是我得到的答案:

步骤定义必须是唯一的,Cucumber 才能知道要执行什么。此外,Given/When/Then 关键字在技术上是可以互换的。它们是为了功能文件的可读性,但与实现无关。因此,如果两个步骤(Given 和 Then)执行相同的操作,那么技术上就没有问题;您应该能够使用功能文件中的相同步骤定义,前面带有“Given”或“Then”关键字。也就是说,您可能需要考虑重写步骤定义来描述预期行为而不是实现,例如“给定一个带有 id xxx 的元素”