我在这里寻找建议或最佳做法。
有时我想使用不同的介词为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
当然,这在步骤定义中不起作用,因为黄瓜不区分步骤谓词。
我已经玩弄了对所有碰撞的Then
步骤添加“验证”,或者为所有重复的Given
步骤添加了'that'。但没有什么是正确的。
Given that I am logged in.
...
Then verify I am logged in.
它当然有效,但我觉得我错过了一些不需要为我的大多数步骤都使用相同的“扩展谓词”的东西。
答案 0 :(得分:2)
我有同样的问题,这是我得到的答案:
步骤定义必须是Cucumber唯一知道要执行的内容。此外,Given / When / Then关键字在技术上可以互换。它们是为了功能文件的可读性,但没有与实现相关联。因此,如果两个步骤(给定和然后)做同样的事情,技术上没有问题;您应该能够使用功能文件中的相同步骤定义,前面带有“Given”或“Then”关键字。也就是说,您可能需要考虑重写步骤定义以描述预期的行为而不是实现,例如“给定一个id为xxx的元素”