Bootstrap

junit可执行但控制层无法执行_testNG之分组测试执行

    一. 用例分组执行测试

  1. 编写一个类,含有2个分组(分组1和分组2),每个分组含有2个测试方法:

6e497d4c15ff80122f24a63ad6222f86.png

  1. 写一个分组前置和分组后置

6f9c97ed5d55be956fcdda933fe31ac0.png

  1. 编写testng.xml文件,定义分组和要执行的分组:

将分组1和分组2放入一个分组中,命名为all

要执行的分组放入 的include标签中:

4872401ddce390d9dcdd330cff1b23a3.png

  1. 执行xml文件:

9f53ea59a877d71cbecb69257cc6c23a.png

二.testng.xml文件介绍

1. 文件结构:

<suite>--<test>-- --<parameter>-- --<test>-- -- -- <parameter>-- -- -- <groups>-- -- -- <classes>

详细的文件结构:

<suite>     <suite-files>          <suite-file path="">suite-file>     suite-files>     <parameter name="" value="">parameter>     <method-selectors>          <method-selector>               <selector-calss name="">selector-calss>          mehod-selector>     method-selectors>     <test name="">          <parameter name="" value=""><parameter>          <groups>               <define name="">                    <include name=""/>                    <exclude name=""/>               define>               <run>                    <include name=""/>                    <exclude name=""/>               run>          groups>          <classes>               <class name="">                    <mehods>                         <parameter name="" value="">parameter>                         <include name="">include>                         <exclude name="">exclude>                    methods>               class>               <class>class>          classes>          <packages>               <package name="">                    <include name="">include>                    <exclude name="">exclude>               package>          packages>          <listeners>               <listener class-name=""/>          listenters>     test>     <test>test>suite>

二.具体的节点说明

2.1

说明:一个xml文件只能有一个,,是一个xml文件的根级

由和组成

参数说明:

参数说明使用方法参数值
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配套使用,否则相当于无效参数,thread-count决定了并行测试时开启的线程数量该参数的值false,methods,tests,classes,instances。默认false。

TestNG将并行执行所有的测试方法在不同的线程里;

parallel="tests"  TestNG将并行执行在同一个下的所有方法在不同线程里;

parallel="classes"  TestNG将并行执行在相同下的方法在不同线程里;

parallel="instances"  TestNG将并行执行相同实例下的所有方法在不同的线程里;

parent-module和Guice框架有关,只运行一次,创建一个parent injector给所有guice injectors parent-module和guice-stage和Guice框架有关
guice-stage和Guice框架有关guice-stage="DEVELOPMENT"DEVELOPMENT,PRODUCTION,TOOL,默认"DEVELOPMENT"
configfailurepolicy测试失败后是再次执行还是跳过,值skip和continueconfigfailurepolicy="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的线程池数量整数
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

2.2 -

说明:引入外部的xml文件(地址由path参数决定,path必填项),将引入的xml与当前的xml文件一起使用

声明方法:

<suite-files>     <suite-file path="/path/suitefile1">suite-file>suite-files>

2.3 -

说明:一个下可以有多个,可以通过的parallel="tests"来进行并行测试,必须和thread-count配套使用,否则是无效参数

由、、三部分组成

参数说明:

参数说明使用方法参数值
nametest的名字,将出现在报告里name="testname"test的名字
junit是否按照Junit模式运行junit="true"true和false,默认false
verbose控制台输出的详细内容等级,0-10级(0无,10最详细),不在报告显示verbose="5"0到10
parallel是否在不同的线程并行进行测试,要与thread-count配套使用parallel="mehods"与suite的parallel一致,默认false
thread-count与parallel配套使用,线程池的大小,决定并行线程数量thread-count="10"整数,默认5
annotations获取注解,值为javadoc时,使用JavaDoc的注释;否则用JDK5注释annotations="javadoc"javadoc
time-out设置parallel时,终止执行单元之前的等待时间(毫秒)time-out="10000"整数,单位毫秒
enabled标记是否执行这个testenabled="true"true和false,默认true
skipfailedinvocationcounts是否跳过失败的调用skipfailedinvocationcounts="true"true和false,默认false
preserve-order是否按照排序执行,如果是true,将按照xml文件中的顺序去执行preserve-order="true"true和false,默认true
allow-return-values是否允许返回函数值all-return-values="true"true和false,默认false

 2.4 --

说明:提供测试数据,有name和value两个参数

声明方法:

testng.xml文件中的可以声明在或者级别,在下的会覆盖在下声明的同名变量

2.5 --

说明:方法选择器定义了哪些类的方法需要去执行,类必须继承自org.testng.IMethodSelector

声明方法:

<method-selectors>     <method-selector>          <selector-class name="classname" priority="1">selector-class>          <script language="java">script>    (language还可以用beanshell等)     method-selector>method-selectors>

2.6 --

说明:要运行的组,可以自定义一个组,可以包括要执行的,还排除要执行的方法。必须和配套使用,从下面的类中找到对应名字的方法

由和、三部分组成。

    可以将group组成一个新组,包括要执行和不执行的大组;

    要执行的方法;指定了某group需要依赖的group(比如下面的例子,group1需要依赖group2和group3先执行)。

声明方法:

<groups>     <define name ="all">          <include name ="testgroup1"/>          <exclude name ="testgroup2'/>                              <include name ="testmethod1"/>          <exclude name="testmethod2"/>     run>     <dependencies>          <group name ="group1" depends-on="goup2 group3"/>     dependencies>groups>

2.7 --

说明:方法选择器,要执行的方法写在这里,参数有name和priority。

注释:

1.下必须写要执行的,否则不会执行任何内容,如果填写了class没有写methods,会按照填写的class的下的注释@Test去执行所有的方法

2.下的如果填写了,那只会执行所填写的方法,没有填写的方法不会去执行

声明方法:

<classes>     <class name="要执行的class名">          <methods>               <include name ="要执行的方法名">include>          methods>     class>classes>

2.8 --

说明:指定包名代替类名。查找包下的所有包含testNG annotation的类进行测试

声明方法:

<packages>     <package name="packagename"/>     <package name="packagename">          <include name="methodname"/>          <exclude name="methodname"/>     package>packages>

2.9 --

说明:指定listeners,这个class必须继承自org.testng.ITestNGListener。在java中使用@Listeners({com.example.MyListener.class,com.example.MyMethodInterceptor.class})的注释也可以有同样效果

声明方法:

<listeners>     <listener class-name="com.example.MyListener"/>     <listener class-name="com.example.MyMehodIntercepor"/>listeners>

参考:https://testng.org/doc/documentation-main.html

;