Cucumber 为“给定”和“然后”步骤定义相同的短语

Cucumber 为“给定”和“然后”步骤定义相同的短语,cucumber,aruba,Cucumber,Aruba,我在这里寻找建议或最佳实践 有时我想用不同的介词为两个不同的步骤给出相同的正则表达式/短语。我经常看到的例子是一个短语,它在给定的和然后的步骤中都有意义 给定的用于执行和操作(设置测试状态)的步骤。 然后用于验证状态但不执行操作的步骤。很多时候,我发现同样的措辞对两者都适用。例如,“我已登录” 这是一个人为的场景 Scenario: Login is saved between sessions. Given I am logged in When I exit the appl

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

有时我想用不同的介词为两个不同的步骤给出相同的正则表达式/短语。我经常看到的例子是一个短语,它在
给定的
然后的
步骤中都有意义

给定的
用于执行和操作(设置测试状态)的步骤。 然后用于验证状态但不执行操作的步骤。很多时候,我发现同样的措辞对两者都适用。例如,“我已登录”

这是一个人为的场景

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
当然,这在步骤定义中不起作用,因为cucumber不区分步骤谓词

我曾经尝试过在所有冲突的
步骤中添加“verify”,然后在所有重复的
步骤中添加“that”。但没有什么是正确的

Given that I am logged in.
...
Then verify I am logged in.

它当然有效,但我觉得我遗漏了一些东西,这些东西不需要在我的大多数步骤中使用相同的“扩展谓词”。

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


步骤定义必须是唯一的,Cucumber才能知道执行什么。此外,给定的/When/Then关键字在技术上是可互换的。它们用于功能文件的可读性,但与实现无关。因此,如果两个步骤(给定和然后)做相同的事情,技术上没有问题;您应该能够从要素文件中使用相同的步骤定义,前面加上“给定”或“然后”关键字。也就是说,您可能需要考虑改写您的步骤定义来描述预期的行为,而不是实现,例如“给定ID为xxx的元素”/p>您可以使用<代码>,然后我应该登录是的,这就是我正在做的。只是选择一个稍微不同的句子形式。我想在你的测试中标准化是唯一的方法。我真的希望你能用相同的名字定义时间和步骤