【问题标题】:Should Gherkin 'Then' statements refer to 'I'Gherkin 的“那么”陈述是否应指“我”
【发布时间】:2015-08-26 10:08:44
【问题描述】:

多年来,我一直在使用 Gherkin(与 Cucumber)。我很早就注意到 Cucumber.io 主页示例在给定和 when 语句中引用了“I”,但在 then 语句中没有。

我一直认为这是因为给定且 when 语句是用户的主观行为,而 then 语句应该是关于被测应用程序状态的客观度量。

但是,我注意到在官方 Cucumber 书中,他们的示例在所有步骤中都指的是“我”(包括使用 then 语句时)。

有人知道哪种方法是正确的吗?

【问题讨论】:

  • 我的快速回答:我更喜欢名词而不是代词。读者的困惑更少。
  • @charlie,你能给我那个文件的链接吗?

标签: testing automation cucumber bdd gherkin


【解决方案1】:

根据我关于 BDD 和 Gherkinri 的经验,我们一直认为用户故事有两个角色:用户和系统。并非所有参与者都是最终用户。例如,一个角色可能是另一个系统或想要某些功能以购买您的产品但不会实际使用该产品的人。创建聚合角色(例如消费者)和专门角色(例如浏览器或常客)可能很有用。因此,从最终用户的角度来看,在 Then 步骤中包含 I 实际上是预期的结果。示例:

Then I should see that cash amount 'storedTotalAmount' and cash amount 'currentAmount' are equal 'true'

【讨论】:

  • 很高兴帮助@Aravin。
【解决方案2】:

对于“Then”语句是否应包含“I”没有明确的规则。作为@ekostadinov,它取决于参与测试场景的Actor。

例如在消息传递场景中:

Given Alice is on a messaging page
When Alice posts a message to Bob
Then Bob should receive the message

在这种情况下,在“Then”中使用“I”是没有意义的。但是,如果您的情况略有不同:

Given I am on the messaging page
When I post a message to Bob
Then I should receive confirmation that Bob received the message

那么使用“I”确实有意义。

因此,这取决于您如何编写测试。总而言之,我更喜欢在我的测试中使用角色(即系统中的特定类型的用户),例如Alice、Bob 等。这通常消除了使用“I”的任何可能的歧义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    相关资源
    最近更新 更多