TestNG執行時引數說明

2021-08-01 16:36:28 字數 4581 閱讀 7253

從字面理解也能大概看出是什麼意思。為了方便理解,我們先來看乙個完整的xml

下面這個是我自己平時專案用到的xml

thread-count="10"

parallel=""

verbose="1"

name="******test"

annotations="jdk"

time-out="1800000">

name="browser"

value="chrome" />

class-name="com.mytestng.utils.testnglistener">

listener>

class-name="com.mytestng.utils.myreport">

listener>

listeners>

name="******test"

junit="false"

annotations="jdk">

name="com.mytestng.test.runner.cardlisttest" />

name="com.mytestng.test.runner.wsconfigtest" />

name="com.mytestng.test.runner.plantest" />

name="com.mytestng.test.runner.quickcreatetest" />

classes>

test>

suite>

這個引數是指testng執行時的執行緒池的大小。當啟用了parallel時生效。具體的大小可以從xml檔案中指定。若不指定,預設為10.啟用此引數後可以大幅提高測試用例執行的速度

parallel=」methods」 按照method級別進行併發,即便是配置了依賴跟順序的也會用不同的執行緒執行,但是會按照順序。

parallel=」tests」 按照xml定義的< test > 來執行。

parallel=」classes」 按照類來併發執行

parallel=」instances」 這個是按照例項來併發執行(這個不常用)

其實就是日誌的冗餘級別。tesng官方文件 數字越大,表示日誌打的越細緻。這個如果是要對testng進行重寫,或者擴充套件,做除錯的時候還是很有用的。

來點實際的。我們做個示例,看看究竟是不是這樣

先來看看verbose

我們先配置成0:

reruntimes="2"

thread-count="10"

parallel="tests"

verbose="0"

name="demo"

annotations="jdk"

time-out="1800000">

@test()

public

void

dotest()

執行,看看結果。

0級別的日誌。就是0冗餘:

this is the verbose parameter test!

console只是輸出了測試用例自己的輸出

我們調整一下。調整到10.看一下會有什麼樣的變化:

...

... testng 6.8.6beta_20130517_2142 by cédric beust ([email protected])

...[testrunner] running the tests in

'testngclone'

with

parallel mode:tests

[runinfo] adding method

selector: org.testng.internal.xmlmethodselector@d64342 priority: 10

[testclass] creating testclass for [classimpl class=com.netease.demo.verbose]

[testclass] adding method

verbose.dotest

()[pri:

0, instance:null] on testclass class com.netease.demo.verbose

[xmlmethodselector] including method

com.netease.demo.dobeforeclass

()[xmlmethodselector] including

method

com.netease.demo.dotest

()

由於日誌很多,就沒截全。可以看到,幾乎每一步的操作都列印出來了。所以通常這個級別,我建議都是調整成5.這樣查詢問題會比較方便。

來繼續看看併發執行的引數,我們繼續調整一下。同時,將測試**更新一下,加到10個測試

為了不受干擾,我們日誌級別調整到最低

name="demo" annotations="jdk"

time-out="1800000">

然後測試方法的**調整下,列印出線程的名稱:

@test()

public

void

dotest7()

結果如下:

testnginvoker-dotest2():1495786491980

testnginvoker-dotest3():1495786491981

testnginvoker-dotest10():1495786491984

testnginvoker-dotest1():1495786491984

testnginvoker-dotest7():1495786491984

testnginvoker-dotest6():1495786491985

testnginvoker-dotest9():1495786491986

testnginvoker-dotest4():1495786491987

testnginvoker-dotest8():1495786491987

testnginvoker-dotest5():1495786491988

可以看到,幾乎是同時發起的。當然因為我的電腦比較渣,同時的比較少。而且這裡也可以看到,如果沒有配置test執行的順序,使用了併發的方式執行,執行的順序是無法保證的。

下邊我們再改一下,看看是否可以控制他的順序:

@test(priority=1..10)
testnginvoker-dotest8():1495786748387

testnginvoker-dotest1():1495786748388

testnginvoker-dotest7():1495786748390

testnginvoker-dotest5():1495786748391

testnginvoker-dotest2():1495786748392

testnginvoker-dotest4():1495786748392

testnginvoker-dotest10():1495786748393

testnginvoker-dotest3():1495786748393

testnginvoker-dotest6():1495786748394

testnginvoker-dotest9():1495786748394

事實證明,priorty引數,無法控制執行的順序,那換成dependonmethods呢?

@test(dependsonmethods=)

testnginvoker-dotest1():1495787138612

testnginvoker-dotest2():1495787138620

testnginvoker-dotest3():1495787138624

testnginvoker-dotest4():1495787138626

testnginvoker-dotest5():1495787138629

testnginvoker-dotest6():1495787138633

testnginvoker-dotest7():1495787138636

testnginvoker-dotest8():1495787138640

testnginvoker-dotest9():1495787138643

testnginvoker-dotest10():1495787138646

成功了。但是如果只是這樣。那我的多執行緒有何用呢?那還不是相當於1個執行緒在執行?

當然,別忘了,併發是有多種模式的,methods是最小的乙個粒度。還可以是tests或者

classes。在其他模式下,還是可以有不小的提公升。

更多的用法,可以參考testng的官網文件,然後自己動手實踐一下。

[1]testng官網

[2]testnglistenerapis

參考 JScript 執行時錯誤說明

jscript 執行時錯誤 jscript 執行時錯誤是指當 jscript 指令碼試圖執行乙個系統不能執行的動作時導致的錯誤。當正在執行指令碼 計算變數表示式 或者正在動態分配記憶體時出現jscript 執行時錯誤時。以下是76個執行時錯誤 錯誤號 描述 十進位制 十六進製制 說明 5 800a0...

VC執行時庫 MD MDd MT MTd說明

vc執行時庫設定 vc專案屬性 配置屬性 c c 生成 執行時庫。可以採用的方式有 多執行緒 mt 多執行緒除錯 mtd 多執行緒dll md 多執行緒除錯dll mdd 單執行緒 ml 單執行緒除錯 mld vs2008目前支援以上4種 各執行時庫的說明,參考msdn的 md mt ld 使用執行...

docker執行tomcat常用引數說明

注 執行tomcat的時候有乙個坑 solr資料夾下才能放war包或者解壓好的war包,對映到容器內的 引數說明 v 宿主機真實路徑 容器內的路徑 把宿主機真實路徑對映到容器內的路徑 name 容器名 指定容器的別名,方便啟動 docker start 容器名 停止 docker stop 容器名 ...