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>您可以使用<代码>,然后我应该登录是的,这就是我正在做的。只是选择一个稍微不同的句子形式。我想在你的测试中标准化是唯一的方法。我真的希望你能用相同的名字定义时间和步骤