2014-03-25 45 views
1

我正嘗試使用三種不同的用戶標識/密碼組合來執行整個SpecFlow功能。我正努力在.feature文件中找到一種方法來執行此操作,而不必在MSTest中引入任何循環。Specflow功能級別模板

在方案層面我這樣做:

Scenario Template: Verify the addition functionality 
Given the value <x> 
And the value <y> 
When I add the values together 
Then the result should be <z> 

Examples: 
|x|y|z| 
|1|2|3| 
|2|2|4| 
|2|3|5| 

有沒有辦法做到在功能層面類似的表,這將導致在表中每行要執行的整個功能?

是否有其他功能可用來做同樣的事情?

+0

您寫的內容無效。而不是「場景模板」,您應該使用「場景大綱」,而不是「場景」,您應該使用「示例」關鍵字。 –

+0

另外一個功能由一個或多個場景組成,那麼當您說「是否有一種方法可以在功能級別執行類似的表,以便爲表中的每一行執行整個功能時」 ?您目前擁有的粒度級別對我來說看起來很好。 –

+0

我道歉 - 在發佈之前,我應該檢查一下我的帖子。您發現的錯誤與問題沒有直接關係。 –

回答

0

「有沒有辦法在功能水平,這將導致 爲表中的各行要執行的整個功能做一個類似的表?」

不,Specflow(實際上是小黃瓜語言)沒有「特徵概述」的概念,即指定應完整運行的特徵集合的方式。

通過使用Specflow標籤來標記相關場景,您可以實現您正在尋找的內容。然後,您可以使用測試運行器來觸發所有使用該標記的場景的測試,例如

@related 
Scenario: A 
    Given ...etc... 

@related 
Scenario: B 
    Given ...etc. 
2

我不認爲你的代碼片段正在工作嗎?我更新了以下更正,我認爲你需要(如Fresh也指出)和一些可能的改進。

通過這段代碼,您會看到示例表中的每行都會運行該場景。因此,第一個測試將連接'Bob'和'密碼',請求您的工具添加1和2並檢查答案是3.

我還添加了ID列 - 這是可選的,但我用ID號讀取結果要容易得多。

Scenario Outline: Verify the addition functionality 
    Given I am connecting with <username> and <password> 
    When I add <x> and <y> together 
    Then the result should be <total> 

Examples: 
    | ID | username | password | x | y | total | 
    | 1 | Bob  | password | 1 | 2 | 3  | 
    | 2 | Helen | Hello123 | 1 | 2 | 3  | 
    | 3 | Dave  | pa£sword | 1 | 2 | 3  | 
    | 4 | Bob  | password | 2 | 3 | 5  | 
    | 5 | Helen | Hello123 | 2 | 3 | 5  | 
    | 6 | Dave  | pa£sword | 2 | 3 | 5  | 
    | 7 | Bob  | password | 2 | 2 | 4  | 
    | 8 | Helen | Hello123 | 2 | 2 | 4  | 
    | 9 | Dave  | pa£sword | 2 | 2 | 4  | 
+0

我不認爲這是傑夫正在尋找的東西,因爲它與他在他的問題中的含義基本相同(除了你已經按照我在評論中所建議的那樣糾正了這一點)。 –

+0

感謝您的回覆。這實際上是我想要避免的。我想要做的是在功能級別定義一組用戶角色,併爲每行執行一次功能中的所有場景。基本上,我想要一個具有功能級別示例表的功能級別實現。假設說一個「特徵模板」完成它自己的「示例」表。我意識到這是不可用的,這使我想知道完成同樣事情的最佳方式。 –

0

SpecFlow +亞軍(又名SpecRun,http://www.specflow.org/plus/),提供基礎設施(稱爲測試目標),以能夠運行相同的測試套件(或選擇的場景),使用不同的設置。有了這個,你可以解決你提到的問題。它也可用於使用不同瀏覽器運行相同的Web測試等。查看此屏幕截圖瞭解詳細信息:http://www.youtube.com/watch?v=RZYV4Dvhw3w