解決TestNG多執行緒併發時,執行緒不安全問題

2022-06-28 05:24:09 字數 1056 閱讀 2192

testng的強大功能之一就是支援多執行緒併發測試,但前提是需要我們的程式是執行緒安全的,否則實際測試過程中就會出錯。例如當我們初始化兩個driver時,如果不保證執行緒安全,則兩個driver在執行時會相互干擾甚至死掉。

未進行執行緒安全優化之前的**(用selenium 3,firefox瀏覽器驅動需要特殊設定):

public

static webdriver driver;/*

設定靜態driver,可隨時呼叫

*/public

static

void

getdriver(string browser)

else

if(browser.equals("chrome"))

}

此時通過getdriver()方法可直接呼叫對應driver,如果兩個測試用例分別都建立相同瀏覽器driver,同時在testng的.xml檔案中配置多執行緒併發執行,此時兩瀏覽器執行的操作雖然分別在不同執行緒中,但因為引用的是同乙個driver,因此會出現兩瀏覽器相互跳躍操作的情況,即本該在瀏覽器1中的操作跳躍到瀏覽器2中執行,從而報錯,解決辦法是使用threadlocal來保證執行緒安全,具體**如下:

/*

使用threadlocal來保證程式的執行緒安全,以免testng在進行多執行緒併發測試時發生執行緒安全問題

*/public

static threadlocalthreaddriver=new threadlocal();

public

static

string browsertype;

public

static

webdriver getdriver()

else

if(browsertype.equals("chrome"))

}

return

driver;

}public

static

void setupdriver(string browser)

本文部分內容來自  ,感謝原作者。

Testng 中的多執行緒測試

test invocationcount 100,threadpoolsize 50 test這個annotation有兩個屬性,invocationcount設定的是這個方法的執行次數 threadpoolsize 這個屬性表示的是開啟執行緒數的多少 threadpoolsize的設定要依賴 in...

多執行緒併發

多執行緒併發主要有3個方面 1 同步器 主要有synchronized,reentrantlock 訊號量,門栓 countdownlatch 障柵 cyclicbarrier 交換器。2 同步容器 主要包括 對映 集 佇列 對映 concurrenthashmap,concurrentskipli...

多執行緒併發

更簡單的執行緒池 多執行緒和多程序都可以很容易的實現併發,協程通過切換上下文來充分利用cpu實現併發效果 threading模組 thread類的基本狀態和行為 屬性名和值 name none,group none,target none,args kwargs daemon none 方法 sta...