作为一个端到端的自动化测试程序,我一直认为Given,When,Then语句(在使用Cucumber时包含在Gherkin语言中)应该只出现在1.给定,2。当,3然后。
即。测试不应该遵循,例如,给定,何时,然后,何时,然后。而应该遵循Given,When,Then only。
这种假设的原因在于仅测试应用程序的一个区域的单个测试。
然而,我注意到网上的一些小黄瓜示例,他们有时使用以下排序:给定,何时,何时,然后。
有人知道在写完一篇文章之后回到Whens是否可以接受最佳做法?我很欣赏测试仍然有效,只是想知道这是好事还是坏事。
答案 0 :(得分:5)
Gherkin syntax目前包含六个用于描述功能步骤的关键字:
Given
When
Then
And
But
*
关键词是供人类消费和传达业务逻辑的便利。然而,小黄瓜语言本身将关键词视为可互换的符号,所以你可以像语法(从小黄瓜的角度)写出折磨的英语,如:
但持有一美元 然后另一美元多 我拥有两美元的所有权。
这是完全有效的小黄瓜,但数钱的可怕代表。那么,如果所有的单词都是可以互换的,那为什么会有这么多呢? wiki非常清楚,它们提供了一系列约定,以便以更自然的方式进行交流,而wiki甚至提供了一些关于如何区分单词的例子。维基还具体说:
黄瓜在技术上并没有区分这些...... [种类]的步骤。但是,我们强烈建议您这样做!这些单词是经过精心挑选的,你应该知道进入BDD思维方式的目的是什么。
换句话说,使用Gherkin术语以(相对)自然语言与您的特征进行交流,并将Arcana埋入步骤定义中。使用语言流程中最自然的任何关键词,并且不会出现一个写得不好但不严格遵守可能不适用于所有情况的约定的场景。< / p>
答案 1 :(得分:4)
尽管可以用这种方式编写场景,但这不是最佳实践。我一个人犯了这个错误,它可能会导致报告和维护方面的问题。
一个原因是When
声明了一个动作,Then
验证了该动作的结果。有时 - 然后两次违背情景的个别行为。
对于阅读该场景的人也会感到困惑:)
这里有一点post关于这个
答案 2 :(得分:3)
网上有很多非常糟糕的小黄瓜。关于Gherkin的优点还有一系列的意见。
我的观点是When Then When Then是一个反模式。可能需要以下其中一项
或
一般情况下,大多数场景在后续场景中变为“给定”,因为您在现有行为的基础上定义并创建新行为。