2014-10-12 75 views
0

開始玩Behave BDD測試,我發現沒有步驟定義命名空間的東西,這很容易導致AmbiguousStep異常。這裏有什麼最佳實踐?我認爲當你的測試項目越來越大時,這會成爲一個問題。behave(BDD)AmbiguousStep Error

這裏是我想要做的事:

功能1:

Feature: feature1 
    Scenario: f1s1 
    When take action 
    Then it's ok 

功能2:

Feature: feature1 
    Scenario: f2s1 
    When take action 
    Then it's ok 

foo4feature1.py:

@when('take action') 
def step_impl(context): 
    assert True 

@then("it's ok") 
def step_impl(context): 
    assert True 

bar4feature2.py:

@when('take action') 
def step_impl(context): 
    assert True # some other logic here according to feature2 

我的兩個特徵(特徵-1特徵-2)都具有步驟採取行動。這兩個步驟在他們的場景中彼此具有不同的含義。他們恰好是同名(例如,採取行動)。我知道我可以仔細選擇步驟的名稱(例如,在功能2中使用「採取f2的動作」而不是「採取行動」)以避免衝突。然而,在一個大型測試項目中,您無法確保每個人都記住其他人功能中的步驟名稱。作爲BDD事物的新手,我正在尋找最佳實踐來解決這個問題。

回答

0

一般來說,您需要簡潔步驟(對於大多數BDD框架來說都是如此)。因此,一個目錄範圍內的同一步只能有一個含義。如果在同一步驟(文本)中需要兩種不同的含義,則當前需要使用不同的目錄。

未來,行爲將提供「功能特定」範圍概念。這將讓你準確地得到你想要的。

0

BDD是一種溝通和協作技術。存在的工具可以直接自動化客戶,開發人員和測試人員共同發現的示例,但場景應使用您的域的「無處不在的語言」編寫(請參閱Eric Evans的「Domain Driven Design」一書)。

所以,最簡單的答案是最佳實踐需要協作定義共享詞彙。這些場景會更容易閱讀和理解......這是一件好事。