2015-10-26 63 views
4

是否有一種方法可以將「Examples」數據表保存在與場景綱要不同的文件中?Specflow:爲許多場景綱要維護一個示例表

我試圖實現的是每個瀏覽器一個接一個地運行整個場景。

我有這個具有以下功能工作:

Feature: OpenGoogleInChrome 

Scenario Outline: Open Google in Chrome 
    Given a browser '<browser>' 
    When the browser points to 'https://www.google.co.uk/' 
    Then the title should be 'Google' 

Examples: 
    | browser | 
    | Chrome | 
    | Edge | 
    | Firefox | 

但是,這將意味着維護跨越每一個測試的例子表,如果我添加其他瀏覽器。是否可以引用每個場景大綱中的單個「示例」表?

或者從步驟定義中調用場景大綱,並附帶一個示例表格?

(使用Specflow和硒的webdriver使用Nunit)

雖然「背景技術」讓你定義一個共享的表,它似乎是用於具有多個場景的單個特徵。我正在尋找的是在不同(.feature)文件的每個功能中使用同一張表的方法。

根據經驗我知道使用像@Chrome這樣的標籤可以用於單獨的瀏覽器(這是我寫了大部分測試的方式),但使用多個標籤會導致所有瀏覽器同時運行,而不是其他。

+0

[相關問題不是很重複](http://stackoverflow.com/questions/23385843/sharing-example-tables-between-scenarios) –

回答

0

我不認爲你可以在specflow(或任何小黃瓜語言實現)中做到這一點。正如在相關問題中提到的,你可以有一個提供表格的背景,但我不確定這可以用來在場景大綱中提供示例,至少我從來沒有見過這種用法,我不知道如何它可以工作。

我想到的可能(骯髒)解決方案將沿着腳本掃描功能文件並在添加新瀏覽器時更新示例(我無法想象這很常見),或者如果在每個場景大綱中鍵入它都有問題,請使用代碼片段來添加示例文本。

0

SpecFlow建議爲這些場景使用標籤。也許你做了書店教程,然後你可以從標籤中識別出來,如果場景是系統或瀏覽器測試的話。

@Chrome @Firefox @IE # <- feature wide, applicable for all scenarios 
Feature: Open Google 

Scenario: Open Google in the browser 
    Given the browser is active 
    When I navigate to "https://www.google.co.uk/" 
    Then the title should be 'Google' 

@Lynx # <- additional browser for a specific scenario 
Scenario: There is a Search button 
    Given the browser is active 
    When I navigate to "https://www.google.co.uk/" 
    Then I should see a button with label "Search" 

現在您可以爲每個標籤/類別運行testrunner。

+0

請看最新的編輯。如果您知道確保瀏覽器不會同時運行的方法,那麼我們可能會有答案。 – cacheCache

+0

如果您從命令行運行nunit,[您可以使用'/ include'參數](http://www.nunit.org/index.php?p=consoleCommandLine&r=2.5)僅運行一種類型的測試瀏覽器。在測試設置中,您必須確定需要啓動哪個瀏覽器,並且僅爲該特定的nunit運行使用該瀏覽器。 – AutomatedChaos

0

我認爲最可維護的方法是在運行測試之前通過設置環境變量來參數化使用的瀏覽器。在步驟定義Given中,可以使用Environment.GetVariable("...")在運行時檢索該值。

另一種替代方法是創建一個包含要使用的瀏覽器名稱的特殊文本文件。打開此文件並閱讀您的Given步驟定義中的內容。

如果您有自動構建,可以設置一個電源外殼或批處理文件,將該文本文件設置爲第一個瀏覽器,運行所有測試,然後將文本文件設置爲下一個瀏覽器並重新運行測試。沖洗並重復使用每個瀏覽器。

你可以把它放入Visual Studio測試項目的<appSettings>中,並利用配置轉換。當在命令行中運行NUnit的測試,你可以切換配置:

nunit-console nunit.tests.csproj /config:Firefox 
nunit-console nunit.tests.csproj /config:InternetExplorer 
nunit-console nunit.tests.csproj /config:Chrome 
nunit-console nunit.tests.csproj /config:Safari 

的缺點是你創建的每個瀏覽器的一個構建配置,但它應該做的伎倆。

相關問題