2012-09-08 72 views
0

我有一套功能相似的網站,我想寫黃瓜規格驅動開發和千年瀏覽器測試。該網站使用不同的語言,並具有不同的網址,但主要具有相同的功能。黃瓜變換多變量場景輪廓示例

一個示例場景可能是

Scenario Outline: Photo Gallery Next Action 
    Given I visit a "<photo-gallery-page>" 
    When I click "<next-button>" in the gallery 
    Then the photo should advance 
    Examples: 
     | photo-gallery-page | next-button | 
     | www.site1.com/photo-gallery | Next | 
     | www.site2.com/la-galerie-de-photos | Suivant | 

這是很好,當我有一個小數量的場景和示例。不過,我期待着上百種場景以及相當正規的新網站推出。我想避免在啓動新網站時編輯每個場景以添加示例。

我想我需要將所有示例變量存儲在每個站點配置中,以便我可以針對所有站點運行相同的場景。然後,我可以相當容易地添加新配置,避免編輯所有場景示例並使其無法讀取。

site[:en].photo-gallery-page = 'www.site1.com/photo-gallery' 
site[:fr].photo-gallery-page = 'www.site2.com/la-galerie-de-photos' 
site[:en].next-button = 'Next' 
site[:fr].next-button = 'Suivant' 

一種選擇是在一些地方保存此配置,然後使用腳本生成的網站特定小黃瓜文件。我可以運行這些生成的黃瓜,其中將包含所需的示例

我想知道是否有更簡單的方法。我的另一個想法是,如果我可以使用錶轉換來替換示例塊。我已經閱讀過了,但據我所知,如果它是一個步驟中的內嵌表格,我只能轉換一個表格(並將其替換爲自定義代碼塊)。我無法以相同的方式轉換一個示例塊。

我理解正確嗎?有關如何最好地實現這一點的任何其他建議?

回答

0

我不知道是否有更好的方法......這一切都感覺非常脆弱。

如果:

Given I follow a link to the gallery "MyGallery" 
And the gallery "MyGallery" contains the following photos: 
|PhotoID|PhotoName| 
|1  |MyPhoto1 | 
|2  |MyPhoto2 | 
And the photo "MyPhoto1" is displayed 
When I view the next photo 
Then the next photo "MyPhoto2" should be displayed 

請注意,你已經取出按鈕名稱等的概念 - 實現細節都可能更符合步驟定義來定義。您正在定義的行爲只需進入畫廊,查看圖像,請求下一張圖片,查看下一張圖片。在步驟定義中定義如何

我在http://cuke4ninja.com/上發現了一些關於此主題非常有用的閱讀材料。下載PDF並查看網頁自動化部分(詳細介紹網絡自動化金字塔)。

要解決您的配置問題,也許您可​​以定義某種配置。並通過依賴注入將其提供給步驟定義文件。您可以通過從不同的配置加載來使其具體位置。如你在其構造函數中所建議的那樣。步驟定義可以從配置中提取相關的站點特定數據。類「屬性。我認爲這會讓你的場景更易讀不易碎。