新建一个自定义 xml 配置文件 tester.xml (maven项目将该文件创建在 resource 目录下)
<?xml version="1.0" encoding="UTF-8"?> <!-- @BeforeSuite --> <suite> <!-- @BeforeTest --> <test> <classes> <class /> <class /> </classes> </test> <!-- @AfterTest --> <!-- @BeforeTest --> <test> <classes> <class /> </classes> </test> <!-- @AfterTest --> </suite> <!-- @AfterSuite -->运行结果:
从这个结果显示出注释的作用位置。其中 @BeforeGroups 和 @AfterGroups 的作用范围是可以跨类的,但类必须是在同一个测试用例(<test>标签)范围内;
这些标签的运行先后顺序可以总结为:
@BeforeSuite->@BeforeTest->@BeforeClass->{@BeforeMethod->@Test->@AfterMethod}->@AfterClass->@AfterTest->@AfterSuite(其中{}内的与多少个@Test,就循环执行多少次)。
四、testng.xml 配置文件详解 1、配置文件结构(较详细): <?xml version="1.0" encoding="UTF-8"?> <!--添加dtd约束文件,标签自动提示--> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite> <suite-files> <suite-file path=""></suite-file> </suite-files> <parameter value=""></parameter> <method-selectors> <method-selector> <selector-calss></selector-calss> </mehod-selector> </method-selectors> <test> <parameter value=""><parameter> <groups> <define> <include/> <exclude/> </define> <run> <include/> <exclude/> </run> </groups> <classes> <class> <mehods> <parameter value=""></parameter> <include></include> <exclude></exclude> </methods> </class> <class></class> </classes> <packages> <package> <include></include> <exclude></exclude> </package> </packages> <listeners> <listener class-name=""/> </listenters> </test> <test></test> </suite> 2、配置文件标签说明 <suite>标签说明:一个xml文件只能有一个<suite>, 是一个xml文件的根级
<suite> 由 <test> 和 <parameters> 组成
标签属性说明:
属性 说明 使用方法 参数值name 必选项,的名字,将出现在reports里 name="XXX" suite名字
junit 是否执行Junit模式(识别setup()等) junit="true" true和false,默认false
verbose 控制台输出的详细内容等级,0-10级(0无,10最详细) verbose="5" 0到10
parallel 是否在不同的线程并行进行测试,要与thread-count配套使用 parallel="mehods" 详见表格下内容,默认false
parent-module 和Guice框架有关,只运行一次,创建一个parent injector给所有guice injectors
guice-stage 和Guice框架有关 guice-stage="DEVELOPMENT" DEVELOPMENT,PRODUCTION,TOOL,默认"DEVELOPMENT"
configfailurepolicy 测试失败后是再次执行还是跳过,值skip和continue configfailurepolicy="skip" skip、continue,默认skip
thread-count 与parallel配套使用,线程池的大小,决定并行线程数量 thread-count="10" 整数,默认5
annotations 获取注解,值为javadoc时,使用JavaDoc的注释;否则用JDK5注释 annotations="javadoc" javadoc
time-out 设置parallel时,终止执行单元之前的等待时间(毫秒) time-out="10000" 整数,单位毫秒
skipfailedinvocationcounts 是否跳过失败的调用 skipfailedinvocationcounts="true" true和false,默认false
data-provider-thread-count 并发时data-provider的线程池数量 data-provider-thread-count="5" 整数
object-factory 一个实现IObjectFactory接口的类,实例化测试对象 object-factory="classname" 类名
allow-return-values 是否允许返回函数值 all-return-values="true" true和false
preserve-order 是否按照排序执行 preserve-order="true" true和false,默认true
group-by-instances 按照实例分组 group-by-instances="true" true和false,默认false
parallel 属性详细说明
该参数的值false,methods,tests,classes,instances。默认false
parallel 必须和 thread-count 配套使用,否则相当于无效参数,thread-count 决定了并行测试时开启的线程数量
parallel="mehods" TestNG将并行执行所有的测试方法在不同的线程里
parallel="tests" TestNG将并行执行在同一个<test>下的所有方法在不同线程里
parallel="classes" TestNG将并行执行在相同<class>下的方法在不同线程里
parallel="instances" TestNG将并行执行相同实例下的所有方法在不同的县城里