2013-02-27 48 views
4

我在這裏尋找建議或最佳實踐。爲`Given`和`Then`定義相同的短語步驟

有時候我想給相同的正則表達式/短語使用不同的介詞2個不同的步驟。我經常看到的情況是在GivenThen步驟中都有意義的短語。

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. 

它的工作原理,當然,但我覺得我失去了一些東西,不需要具有相同的「擴展謂詞」大多數我的步驟。

+2

你可以使用'然後我應該登錄' – 2013-02-28 08:09:18

+0

是的,那就是我在做什麼。只是選擇一個稍微不同的同一句話。我想在你的測試中標準化是唯一的方法。我真的希望你可以用同樣的名字來定義When和Then的步驟。 – DragonFax 2013-03-01 04:23:02

+0

[兩個步驟的定義是相同的,但一個是給定的,一個是的]的可能重複(https://stackoverflow.com/questions/47107183/two-step-definitions-that-are-the-same-但是酮是換給定和酮是換然後) – Marit 2017-12-30 10:57:52

回答

0

我有同樣的問題,這是我得到了答案:

步驟定義必須是唯一的黃瓜知道要執行什麼。另外,Given/When/Then關鍵字在技術上可以互換。它們是爲了可讀性的功能文件,但沒有鏈接到實現。所以如果兩個步驟(Given和Then)都做同樣的事情,技術上沒有問題;您應該能夠使用您的功能文件中的相同步驟定義,前面帶有'Given'或'Then'關鍵字。也就是說,您可能需要考慮重寫您的步驟定義來描述預期的行爲而不是實現,例如, 「給定一個ID爲xxx的元素」

相關問題