1
使用selenium網格與TestNg運行並行測試,@BeforeTest方法似乎在同一個線程上啓動兩個測試,任何想法爲什麼?我試圖確保每個測試類都從它自己的線程開始。硒網格,測試開始在同一線程並行運行時開始
@BeforeTest(alwaysRun = true)
@Parameters({ "selenium.OS", "selenium.browser","selenium.testClassNameHere" })
public void beforeTest(String OS, String browser, String testClassNameHere) {
Out.trace("Starting beforeTest for "+testClassNameHere+" on thread: " + Thread.currentThread().hashCode());
//create driver here
Out.trace("beforeTest has finished");
}
然而,這裏是對數圖中,兩個試驗班開始在同一個線程,並獲得創建只有兩個驅動程序,這會引發各種與聽衆和報告頭痛。
TRACE: Starting beforeTest for AcceptanceTests.ErrorReportingTests on thread: 777376239
TRACE: Starting beforeTest for AcceptanceTests.PopupTests on thread: 777376239
TRACE: Starting beforeTest for AcceptanceTests.LoginPageTests on thread: 1235740568
TRACE: Finished making driver.
TRACE: Finished making driver.
TRACE: beforeTest has finished
TRACE: beforeTest has finished
這裏顯示三個測試類的ANT XML文件...
<?xml version="1.0"?>
<suite name="Debugging QA Tests" parallel="tests" thread-count="10">
<test name="Popup Tests" preserve-order="true" >
<parameter name="selenium.OS" value="localhost" />
<parameter name="selenium.browser" value="chrome" />
<parameter name="selenium.testClassNameHere" value="AcceptanceTests.PopupTests" />
<classes>
<class name="qaautomation.AcceptanceTests.PopupTests" />
</classes>
</test>
<test name="Login Page Tests" preserve-order="true">
<parameter name="selenium.OS" value="localhost" />
<parameter name="selenium.browser" value="chrome" />
<parameter name="selenium.testClassNameHere" value="AcceptanceTests.LoginPageTests" />
<classes>
<class name="qaautomation.AcceptanceTests.LoginPageTests" />
</classes>
</test>
<test name="Error Reporting Tests" preserve-order="true">
<parameter name="selenium.OS" value="localhost" />
<parameter name="selenium.browser" value="chrome" />
<parameter name="selenium.testClassNameHere" value="AcceptanceTests.ErrorReportingTests" />
<classes>
<class name="qaautomation.AcceptanceTests.ErrorReportingTests" />
</classes>
</test>
</suite>