2014-09-01 87 views
1

我有一些用C#編寫的Selenium測試,它們正在被編譯爲一個使用nunit-console.exe從命令行運行的.dll文件。使用一個變量執行NUnit測試用例

這些測試是在我由一個現場測試環境做什麼工作的罰款,但我需要爲測試更通用...

這些測試背後的想法是,他們將使用在部署了一個軟件之後。正在部署的軟件將在IIS中設置一個站點,並且該站點將綁定到一個端口,該端口將根據當時可用的端口自動分配。我需要進行測試以瞭解網站將運行在哪個端口上,否則可能會測試錯誤的站點。我可以通過使用我使用的部署工具的返回值來識別它正在運行的端口。

因此,我的問題是:是否有可能將參數(例如網站端口號)傳遞給nunit-console,以供我已編譯的Selenium測試使用?

我能想到的唯一的其他解決方案是在部署之後構建測試。我想避免這種情況,因爲軟件已經經歷了構建階段,並且再次構建對我來說似乎很混亂,特別是如果我們的構建服務器(Bamboo)由於它是部署任務內的某個定製腳本而失去了構建過程的可見性。

在此先感謝。

+0

它是配置。所以一個配置文件。你說部署的返回值告訴你它在哪個端口上。因此,使用像PowerShell這樣的腳本語言來讀取配置文件並對其進行編輯。任務完成。 – Arran 2014-09-01 17:54:58

回答

3

您可以使用環境變量。

在你的Selenium測試你可以用

var port = System.Environment.GetEnvironmentVariable("SITE_PORT");

讀它,你可以從不同的源設置,例如批處理腳本或提示:

set SITE_PORT=<result of command>

+0

謝謝,我可以看到這個解決方案工作得最好。 – 2014-09-08 07:23:42

0

AFAIK有在當前版本的NUnit中沒有辦法做到這一點。你的情況可能的解決方案之一可以使用配置文件(我有時使用)。如果您知道測試運行在哪個端口上,您可以將該信息保存到配置文件中並從中獲取數據(使用ConfigurationManager):url或其他您需要的。 YOu不會花太多時間來改變你的測試(你幾乎不需要那麼做,只需添加從配置文件獲取URL並將其粘貼到正確位置的方法=))。