2015-07-02 39 views
0

我的商業用戶喜歡使用那句話「它應該被創建」,它由場景的上下文決定。例如:Python中的曖昧步驟行爲

Given I have gift certificate for "<name>" 
When I enter the gift certificate 
Then It should be created 

Given Customer order return for order "<order_no>" 
When I create the customer order return 
Then It should be created 

在「則應該是創造了」,我想找回無論是創建禮券或比較客戶訂單的回報。但是,它們具有完全不同的API和對象。

首先,有沒有辦法在Python Behave中做到這一點,但沒有得到「Exception AmbiguousStep:」?

如果沒有,BDD世界中的最佳實踐是什麼,而不會強迫用戶不斷重複自己說「那麼應該創建禮券」或「那麼應該創建客戶訂單退貨」?

謝謝。

回答

1

在具體的情況下,你給我們這裏,我會更詳細地寫下步驟,以避免「它」。所以我會寫「然後創建禮券」等。我寧願避免步驟依賴於通過context傳遞的狀態。

但是...

有時會出現這樣的問題。在你的情況下,也許與你的商業用戶打交道的政治,使得要求更多的冗長不會飛得很好。或者可能存在技術上的原因,導致我上面提出的建議是不可取的或無法使用。

如果您不能使用更詳細的步驟,您可以執行的操作是使Then it should be created步驟依賴於將context字段設置爲一個值,該值將爲該步驟提供足夠的信息以執行其工作。它可能類似context.created_object。創建對象的步驟會將此字段設置爲適當的值,以便Then it should be created可以執行其工作。你將在那裏存儲什麼取決於你的應用程序的具體情況。

對於我在一個瀏覽器窗口中基於鼠標點擊測試上下文菜單的外觀的一個應用程序,有時我記錄的是對用戶做出右鍵單擊的DOM元素的引用提出了菜單。有時它是提供x,y座標的對象。這是我的應用程序需要執行它的檢查。在這種情況下,最好讓信息通過context傳遞,因爲Selenium在後面的步驟中重新查詢DOM可能在網絡上非常昂貴。通過數十種測試,它可以輕鬆地爲測試套件的運行添加分鐘數,然後考慮套件必須運行多種瀏覽器,操作系統和瀏覽器版本的組合。