2015-10-20 46 views
0

現在,我的編碼UI測試使用它們的app.config來確定它們執行的域,它與環境具有1-1的關係。爲了簡化計算:在多種環境下執行編碼的UI測試

  • www.test.com
  • www.UAT.com
  • www.prod.com

和App.config中我有類似:

<configuration> 
    <appSettings> 
     <add key="EnvironmentURLMod" value ="test"/> 

爲了在不同的環境下運行測試,我手動更改了運行之間的值。比如我這樣打開瀏覽器:

browserWindow.NavigateToUrl(new Uri("http://www." 
       + ConfigurationManager.AppSettings.Get("EnvironmentURLMod") 
       + ".com")); 

顯然這樣不雅。我想我有一個願景,我們會爲每次運行放入一個新的app.config,但作爲擾流器,這個測試將在〜10個環境中運行,而不是3個,並且它可能運行的環境可能會改變。

我知道我可以分離這些環境URL修改另一個XML文件,並測試順序訪問它們在data-driven scenario。但即使這似乎不是我所需要的,因爲如果一個環境失敗了,那麼整個測試就會崩潰。我已經看到Environment Variables作爲一個建議,但這需要爲每個環境創建一個測試代理,修改其註冊表,並在每個環境中運行測試。如果確實如此,但它看起來像是一個巨大的虛擬機帶寬,用於收集字符串。

在一個理想的世界,我想這些URL MODS綁成類似測試設置,MTM環境,或構建。我想爲每個域執行一套測試並單獨報告。

總之,參數化這些測試的最佳方法是什麼?有沒有一種方法不涉及排隊新建或刪除配置文件?數據驅動測試的答案是什麼?我是否錯誤地構建了我的解決方案?這似乎應該是這樣一個常見的情況,但我的谷歌搜索並不能讓我在那裏。

任何及所有的幫助表示讚賞。

回答

0

這裏的答案是數據驅動的測試,可惜沒有總銀彈即使有選項「最要好」。

使用的任何數據源,您可以通過在多種環境中的測試(或你能夠想到的任何其他變量),並且基本上迭代返回3個不同的試驗結果 - 一個用於每個排列或數據行。 但是您必須更新您的斷言才能顯示您當前正在執行的環境,因爲測試結果僅顯示「數據行0」或類似的默認設置。如果測試通過,您將無法知道數據行中實際成功運行的內容,,除非您將此信息嵌入到操作日誌中!我很幸運,我的用例自動執行這個操作,因爲我只是使用URL Mod,但其他人可能需要自己做。

爲了讓我們測試在什麼環境對即時變化,我們選擇使用一個TestCase的數據源。這具有很大的靈活性 - 可能比使用數據庫或XML更多 - 但它有其自身的缺點。像所有數據驅動的場景一樣,您必須將測試用例ID本質地「硬編碼」到您的測試方法之上的裝飾器中(因爲它被認爲是屬性)。我希望我們可以在我們想改變我們使用的測試用例的時候將一個app.config放到構建放置位置,至少,但它看起來像我們將不得不在整個解決方案中進行查找+替換。

如果有人知道更好的方法來解耦測試ID或連接字符串的任何其他部分與代碼,我會在這裏給你一個答案。對於其他人,您可以在MSDN上找到更多信息。