初识 testng.xml 配置
testng.xml 主要用来配置testng执行的内容及方式等,其配置内容大致如下:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="testng测试" parallel=”methods” thread-count="8" data-provider-thread-count="10">
<test name="by-package">
<packages>
<package name="test.TestTestNG3" />
</packages>
</test>
<test name="by-class">
<classes>
<class name="test.test.TestTestNG1" />
<class name="test.test.TestTestNG2" />
</classes>
</test>
</suite>
以上配置内容表示有3个Test类需要执行,分别为TestTestNG1、TestTestNG2、TestTestNG3。
标签说明
suite
测试用例的集合,一般来说,一个testng.xml只包含一个suite,suite name会在testng的测试报告中展示
parallel
指定是否在不同的线程中并行进行测试,并指定并发级别,该参数的值有false,methods,tests,classes,instances,默认false。
parallel必须和thread-count配套使用,否则相当于无效参数,(thread-count决定了并行测试时开启的线程数量)
- false
不配置parallel或配置为false时:所有测试方法在同一个线程中执行
如配置为: - (其中TestTestNG1中有两个测试方法 firstMethod, secondMethod, TestTestNG2 中的 test 方法叫 testMethod,TestTestNG3 中的test方法叫做test)
执行结果: - 可以看到所有的测试方法都是在同一个线程中执行的
- methods
parallel=“mehods” :TestNG将并行执行所有的测试方法在不同的线程里
配置如图: - 执行结果:
- 一共起了4个线程
- classes
parallel=“classes” :不同<class> tag下的用例可以在不同的线程执行,相同<class> tag下的用例只能在同一个线程中执行。
配置如图: - 执行结果:
- 可以看到,只有TestTestNg1中的两个方法是在同一个<class>标签下,所以它们在同一线程中执行
- tests
parallel=“tests” :相同<test> tag中的测试方法只能在一个线程中执行,不同<test>中的测试方法在不同的线程中执行
配置如图: - 执行结果:
- TestTestNg1和TestTestNg2在同一个<test>标签下,所以是在同一个线程中执行的。
thread-count
指定最大并发线程数,默认为5
例如将parallel配置为tests,正常情况下应该有2个线程执行,但是由于thread-count配置了1,所以只会有1个线程
配置如图:
执行结果:
data-provider-thread-count
并发时data-provider的线程池数量,默认为10
<test>标签
标记一组测试用例,name 属性指定该组用例的名称,如:
<test name="test1">
<classes>标签
配置需要执行的测试类,如
<classes>
<class name="test.TestTestNG3" />
</classes>
表示执行TestTestNG3这个类中的方法
<packages>标签
添加需要执行的package(包含子package),如
<packages>
<package name="test.package1" />
</packages>
表示执行package1 及它的子package里面的所有测试方法