为`Given`和`Then`定义相同的短语步骤
问题描述:
我在这里寻找建议或最佳实践。为`Given`和`Then`定义相同的短语步骤
有时候我想给相同的正则表达式/短语使用不同的介词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
步骤,或添加一个'that'到所有重复的Given
步骤。但没有什么是正确的。
Given that I am logged in.
...
Then verify I am logged in.
它的工作原理,当然,但我觉得我失去了一些东西,不需要具有相同的“扩展谓词”大多数我的步骤。
答
我有同样的问题,这是我得到了答案:
步骤定义必须是唯一的黄瓜知道要执行什么。另外,Given/When/Then关键字在技术上可以互换。它们是为了可读性的功能文件,但没有链接到实现。所以如果两个步骤(Given和Then)都做同样的事情,技术上没有问题;您应该能够使用您的功能文件中的相同步骤定义,前面带有'Given'或'Then'关键字。也就是说,您可能需要考虑重写您的步骤定义来描述预期的行为而不是实现,例如, “给定一个ID为xxx的元素”
你可以使用'然后我应该登录' – 2013-02-28 08:09:18
是的,那就是我在做什么。只是选择一个稍微不同的同一句话。我想在你的测试中标准化是唯一的方法。我真的希望你可以用同样的名字来定义When和Then的步骤。 – DragonFax 2013-03-01 04:23:02
[两个步骤的定义是相同的,但一个是给定的,一个是的]的可能重复(https://stackoverflow.com/questions/47107183/two-step-definitions-that-are-the-same-但是酮是换给定和酮是换然后) – Marit 2017-12-30 10:57:52