簡體   English   中英

Selenium GRID 2 + NUnit 3選項可並行運行測試

[英]Selenium GRID 2 + NUnit 3 options to run tests in parallel

我決定從當前解決方案(幾年前使用我們團隊使用經過修改的NUnit NDistribUnit在VirtualMachines上運行測試,然后在集線器服務器上收集結果)切換到Selenium Grid 2。

嘗試了具有ParallelizableAttribute的選項。 不幸的是,我注意到IWebDriver存儲在全局變量(puhh)中。 這導致測試啟動多個瀏覽器實例,但是測試使用單個IWebDriver->測試在單個瀏覽器中執行->測試在單個進程下運行,但是具有多個“工作者”線程。 嘗試使用2個VM作為“節點”,並使用本地PC作為集線器。

我知道最好的解決方案是更改無效的主意以將驅動程序存儲在全局變量中,但是這將花費太多時間:有3k +繁重的UI測試需要更新; 許多靜態方法都希望將驅動程序作為全局變量進行更新。

NUnit 3.0還提供了Option以並行運行多個程序集。 要運行多個測試項目很好,但是目前每個應用程序有1個程序集。 並行運行一個應用程序(一個程序集)的測試會很好。

還有其他使用GRID + NUnit 3的方法來使其工作嗎?


最終,重構了現有的解決方案:現在,執行期間的每個測試都有自己的驅動程序。 由於此更改,許多代碼被重寫(似乎有太多方法希望將IwebDriver用作全局變量)

實際上,有兩種選擇可以做到這一點:

  1. 重構-完成一個測試項目。 除了刪除靜態變量(初始重構目的)以外,還更改了其他代碼。 很大的缺點-需要付出很大的努力。
  2. 使用TeamCity代理進行並行運行。 我忘了提一下,最終測試是在TeamCity上執行的,但是由單個代理執行。 對於左“舊”測試(驅動程序實例存儲在靜態變量中),幾個TC代理配置為僅運行測試解決方案中的幾個類。 此選項非常“快速”,不需要大的代碼更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM