說實話:沒用testng之前,從未想過自動化用例管理如此優雅
testng.xml
1、帶包和不帶包
2、指定包不指定類
在上述案例中,TestNG將查看包test.sample中的所有類,並將僅執行具有TestNG批註的類。
3、指定要包括和排除的組和方法
在上述案例中,在@Test中配置了groups="checkinTests",則會執行,沒有配置或配置groups="brokenTests"則不會執行。
在IndividualMethodsTest類中只有testMethod才會執行。
4、打亂執行順序
默認情況下,TestNG將按照在XML文件中找到的順序運行測試。
如果要以不可預測的順序運行此文件中列出的類和方法,請將preserve-order屬性設置為false。
測試類、測試方法、測試組
1、執行帶返回值的方法
默認情況下,使用@Test的方法如果有返回值,則會直接忽略,使用allow-return-values="true"之後則可以執行。
2、Test groups
TestNG允許您對測試方法進行複雜的分組。
不僅可以聲明方法屬於組,還可以指定包含其他組的組。
然後可以調用TestNG並要求它包括一組特定的組(或正則表達式),而排除另一組。
如果要連續運行兩組不同的測試,這將為您提供最大的靈活性來劃分測試方式,並且不需要重新編譯任何內容。
3、組合用法
上述案例中,testMethod1、testMethod2、testMethod3都會執行,當<include name="functest"/><include name="checkintest"/>則只有testMethod1、testMethod2會執行。
4、正則表達式用法
上述案例,只有groups=windows開頭的方法才會執行。
5、方法包含和排除
上述案例中,如果是單獨匹配方法名,如果方法名中包含enabledTestMethod那麼方法就會執行,如果方法中包含brokenTestMethod則不會執行。
不推薦使用這種方式,因為這樣會改造你的方法名。
6、組的嵌套定義
上述案例中,all包含checkintest、function,function包含window、linux,最終運行all。
只要方法上使用all或者all包含的組都會執行。
7、同時擁有include和exclude
上述案例中,testMethod2方法上既有include的checkintest又有exclude的broken,那麼這個方法將不會執行,使用這種方式可以讓我們非常方便的暫時停用某些方法,而不會影響原來的配置。
當你想繼續使用這些方式時,只需要去掉broken即可。
8、在類上使用分組
上述案例中,method1、method2方法都屬於checkin-test組,method1同時也屬於func-test組。
當運行checkin-test組時method1和method2都會運行,當允許func-test組時只會運行method1。