初识 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时:所有测试方法在同一个线程中执行
    如配置为:
  • testng 支持 testng配置_testng 支持

  • (其中TestTestNG1中有两个测试方法 firstMethod, secondMethod, TestTestNG2 中的 test 方法叫 testMethod,TestTestNG3 中的test方法叫做test)
    执行结果:
  • testng 支持 testng配置_自动化测试_02

  • 可以看到所有的测试方法都是在同一个线程中执行的
  • methods
    parallel=“mehods” :TestNG将并行执行所有的测试方法在不同的线程里
    配置如图:
  • testng 支持 testng配置_测试方法_03

  • 执行结果:
  • testng 支持 testng配置_测试方法_04

  • 一共起了4个线程
  • classes
    parallel=“classes” :不同<class> tag下的用例可以在不同的线程执行,相同<class> tag下的用例只能在同一个线程中执行。
    配置如图:
  • testng 支持 testng配置_用例_05

  • 执行结果:
  • testng 支持 testng配置_xml_06

  • 可以看到,只有TestTestNg1中的两个方法是在同一个<class>标签下,所以它们在同一线程中执行
  • tests
    parallel=“tests” :相同<test> tag中的测试方法只能在一个线程中执行,不同<test>中的测试方法在不同的线程中执行
    配置如图:
  • testng 支持 testng配置_测试方法_07

  • 执行结果:
  • testng 支持 testng配置_用例_08

  • TestTestNg1和TestTestNg2在同一个<test>标签下,所以是在同一个线程中执行的。

thread-count

指定最大并发线程数,默认为5

例如将parallel配置为tests,正常情况下应该有2个线程执行,但是由于thread-count配置了1,所以只会有1个线程

配置如图:

testng 支持 testng配置_testng 支持_09


执行结果:

testng 支持 testng配置_用例_10

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里面的所有测试方法