2016-10-26 32 views
1

我使用BDD功能來描述我們的一些項目。大多數情況下,然後使用django測試客戶端https://docs.djangoproject.com/en/1.10/topics/testing/tools/實施,但有些正在通過硒進行測試。理論上,這些功能中的一些可以通過兩種方法(由硒和測試客戶端)進行測試,但我不知道如何從編碼的角度來處理這些功能。我想讓我的bdd場景實現免費(沒有像「因爲我使用硒作爲測試工具」)。Django + bdd +硒

我在考慮在可行時對每個步驟有多個定義,然後使用實現(或甚至更多)的實現給定場景的所有步驟。這將需要改變python行爲實施我猜。任何面臨類似問題的人

編輯:

我發現

的第一件事是使用階段,有「舞臺」每個實現: https://pythonhosted.org/behave/new_and_noteworthy_v1.2.5.html#test-stages 這可能有點兒解決我的問題,我可以運行的每一個階段的測試。唯一需要解決的是實現(階段)特定的功能。最糟糕的情況下,我可以做出虛擬的傳遞步驟。

回答

1

所以我解決了這個問題,使用每個實現(django,selenium)的階段+標記每個功能,然後運行相應的階段+標記對。 例如:

python mnage.py behave --tags=selenium --stage=selenium 

https://pythonhosted.org/behave/new_and_noteworthy_v1.2.5.html#test-stages https://pythonhosted.org/behave/gherkin.html#tags

編輯:這個解決方案有一個大缺點 - 報告僅包含上次運行的結果,因此,如果您例如與詹金斯使用它(像我一樣),你不沒有看到所有結果正確(有些被設置爲在事實上他們早先通過時被跳過)。但總體而言,當出現測試錯誤時,至少構建失敗,這對我來說是主要的。