testng.xml 配置大全
1.TestNG的运行方式如下:
1 With a testng.xml file 直接run as test suite 2 With ant 使用ant 3 From the command line 从命令行 4 IDE 直接在IDE中执行
在IDEA中直接运行的时候,需要说明的是:可以运行一个测试类,也可以单独运行一个测试的方法。
在IDEA里执行,只需要右键,点击 Run xxx 即可。 如果是在某一个方法的代码块里右键,出现的是 Run methodName ,即只运行当前的方法; 如果是在类的代码块里右键,出现的是 Run className ,即运行当前类中的所有Test方法; 也可以创建testng.xml,右键出现的 Run path/testng.xml ,即运行该配置文件中需要运行的方法。
2.TestNG常见的注解:
注解 | 描述 |
@DataProvider | 为测试方法提供数据 |
@BeforeMethod | 在每个测试方法 前 执行 |
@AfterMethod | 在每个测试方法 后 执行 |
@BeforeClass | 被注释的方法将在当前类的第一个测试方法调用前运行 |
@AfterClass | 被注释的方法将在当前类的所有测试方法调用后运行 |
@BeforeGroups | 被配置的方法将在列表中的gourp前运行。这个方法保证在第一个属于这些组的测试方法调用前立即执行 |
@BeforeTest | 被注释的方法将在测试运行前运行 |
@AfterTest | 被注释的方法将在测试运行后运行 |
@BeforeSuite | 被注释的方法将在所有测试运行前运行 |
@AfterSuite | 被注释的方法将在所有测试运行后运行 |
另外还有一些属性,
alwaysRun:对于每个bufore方法(beforeSuite, beforeTest, beforeTestClass 和 beforeTestMethod, 但是不包括 beforeGroups):
如果设置为true,被配置的方法将总是运行而不管它属于哪个组。
对于after方法(afterSuite, afterClass, ...): 如果设置为true,被配置的方法甚至在一个或多个先调用的方法失败或被忽略时也将运行。
dependsOnGroups:这个方法依赖的组列表
dependsOnMethod:这个方法依赖的方法列表
enabled:这个类的方法是否激活
groups:这个类或方法所属的分组列表
inheritGroups:如果设置为true,这个方法被属于在类级别被@Test annotation指定的组例如:
例如: 1 @Test(enabled = false) //表示该测试用例不被执行 2 public Object runTest() { 3 xxxxxx 4 }
3.testNG.xml配置详解:
testng.xml的基本格式可以在官网上查看,基本格式如下:
以下详细XML结构规则
suite
--tests
----parameters
----groups
------definitions
------runs
----classes
--parameters
比较详细的结构如下:
1 <test name="xxxx">2 <!-- 参数定义的方法 -->3 <parameter name="first-name" value="Cedric"/>4 5 <!-- groups的用法,前提是需要存在classes的组,否则所有方法不被运行 -->6 <groups>7 <!-- 定义组中组的方法 -->8 <define name="groups_name">9 <include name="group1"/> 10 <include name="group2"/> 11 </define> 12 13 <run> 14 <!-- 此处用组名来区别 --> 15 <inclue name="groups_name" /> 16 <exclue name="groups_name" /> 17 </run> 18 </groups> 19 20 <!-- classes的用法,classes中包含类名,类名底下可以包含方法名或排除方法名 --> 21 <classes> 22 <class name="class1"> 23 <methods> 24 <!-- 此处用方法名来区别 --> 25 <inclue name="method_name" /> 26 <exclue name="method_name" /> 27 </methods> 28 </class> 29 </classes> 30 </test>
具体的元素说明:
参数 | 说明 | 使用方法 | 参数值 |
name | 必选项,<suite>的名字,将出现在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 |
1 <suite-files> 2 <suite-file path="/path/suitefile1"></suite-file> 3 </suite-files>
参数 | 说明 | 使用方法 | 参数值 |
name | test的名字,将出现在报告里 | 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 | 标记是否执行这个test | enabled="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 |
1 <method-selectors> 2 <method-selector> 3 <selector-class name="classname" priority="1"></selector-class> 4 <script language="java"></script> (language还可以用beanshell等) 5 </method-selector> 6 </method-selectors>
1 <groups>2 <define name ="all">3 <include name ="testgroup1"/>4 <exclude name ="testgroup2'/>5 </define>6 <run>7 <include name ="all"/>8 <include name ="testmethod1"/>9 <exclude name="testmethod2"/> 10 </run> 11 <dependencies> 12 <group name ="group1" depends-on="goup2 group3"/> 13 </dependencies> 14 </groups>
1 <classes> 2 <class name="要执行的class名"> 3 <methods> 4 <include name ="要执行的方法名"></include> 5 </methods> 6 </class> 7 </classes>
1 <packages> 2 <package name="packagename"/> 3 <package name="packagename"> 4 <include name="methodname"/> 5 <exclude name="methodname"/> 6 </package> 7 </packages>
1 <listeners> 2 <listener class-name="com.example.MyListener"/> 3 <listener class-name="com.example.MyMehodIntercepor"/> 4 </listeners>
(3)一个简单的testng.xml文档
1 <?xml version="1.0" encoding="UTF-8"?>2 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">3 4 <suite name="Suite" parallel="classes" thread-count="3">5 <test verbose="2" preserve-order="true" name="TestDebug">6 7 <classes>8 <class name="com.hera.util.MathTest" />9 10 </classes> 11 </test> <!-- Test --> 12 </suite> <!-- Suite -->
说明: suite定义一个测试套件,可以设置是否使用多线程,可包含多个测试用例或者测试group
parallel = classes 每个测试用例class级别多线程
thread-count =3 线程数为5,可同时执行3个case
preserve-order = true classes和methods按照配置中的顺序执行,false为乱序执行。(If you want the classes and methods listed in this file to be run in an unpredictible order, set the preserve-order attribute to false)
parameter 标签传递参数
4.TestNG参数化测试
<suite name = "testngframetest">
<parameter name="para" value="test_para1"/>
<test name="测试参数赋值">
<classes>
<parameters>
<parameter name="para1" value="test_para1"/>
<parameter name="para2" value="test_para2"/>
</parameters>
<class name = "paramer">
<methods>
<include name ="showparamer"></include>
</methods>
</class>
</classes>
</test>
</suite>
public class paramer {
@Test(parameters ={"para1","para2"})
public void showparamer(String para11,String para22){
System.out.println("testng获得的参数para1如下:"+para11);
System.out.println("testng获得的参数para2如下:"+para22);;
}
}
import org.testng.annotations.Test;
public class paramer {
@Test(parameters ={"para1","para2"})
public void showparamer(@Optional("test1") String para11, @Optional("test2") String para22){
System.out.println("testng获得的参数para1如下:"+para11);
System.out.println("testng获得的参数para2如下:"+para22);;
}
}
public Object[][] dataprovide(){
return new Object[][]{{1,2,3},{3,2,1}};
}
public Object[][] dataprovide(){
return new Object[][]{{1,2},{2,1}};
}
@Test(dataProvider = "dataprovide")
public void showDataprovide(int a,int b,Method c){
System.out.println("DataProvider获得的参数para1如下:"+a);
System.out.println("DataProvider获得的参数para2如下:"+b);;
System.out.println("DataProvider获得的参数para2如下:"+c.getName());
}
转载于:https://www.cnblogs.com/wangcp-2014/p/10026901.html
testng.xml 配置大全相关推荐
- testng xml 示例
TestNG的DTD检查文件:http://testng.org/testng-1.0.dtd.php 更多testng配置及说明,请移步http://testdoc.org/docmaster?pi ...
- TestNG测试框架之TestNG.xml/YAML
前言 该篇文章将详细讲述xml执行方式. testng.xml详解 <?xml version="1.0" encoding="UTF-8"?> & ...
- Testng.xml文件讲解
TestNG是一个测试框架,它能覆盖不同层级的测试,例如,单元测试,集成测试,端对端测试等.可以把Selenium和TestNG结合一起,在Eclipse中用Java写TestNG脚本. TestNG ...
- 智能会议系统(16)---Linphone配置大全
Linphone配置大全 1. 自动接听电话: non_localizable_custom.xml <bool name="auto_answer_calls">fa ...
- jenkins修改pom文件_jenkins参数化配置,pom.xml配置
1.要实现Jenkins参数化构建,要先在代码里写好能接收该参数value的配置,在pom.xml文件里加配置,如下: 1)里添加参数的key和value,通过本地执行时,可以直接从pom文件获取,或 ...
- Spark性能调优系列:Spark参数配置大全(官网资料)
Spark参数配置大全 Spark提供了三个位置来配置系统 Spark属性控制大多数应用程序参数,可以使用SparkConf对象或Java系统属性来设置. 通过conf/spark-env.sh每个节 ...
- Jackson配置大全
jackson支持以下格式 Avro, BSON, CBOR, CSV, Smile, (Java) Properties, Protobuf, TOML, XML or YAML; 基础注解 注解 ...
- 官网spring boot配置大全(三)
注意:配置大全提供配置指引,不能全部复制放到项目去用! 提示:根据所需要配置的功能项具体配置部分内容. ---------------------------------------- SECURIT ...
- MyBatis——XML配置解析
目录 1. 环境配置(environments) 2. 属性(properties) 3. 类型别名(typeAliases) 方式一:通过typeAlias起别名 方式二:通过package起别名 ...
最新文章
- poj_2479 动态规划
- 怎么装python解析器_linux 下安装 python 解析器
- 合并单元格两行_28 HTML5标签学习——table单元格的合并
- 第三周项目一-个人所得税计算器
- mysql中添加下拉,如何从MySQL填充的下拉列表中发布数据
- Python 骚操作!如何让自己在斗图中立于不败之地?
- 【手把手带你学nRF52832/nRF52840 · 开发环境搭建】
- 2运行内存多大_智能设备中的内存与容量为何傻傻分不清?它们的区别是什么?...
- lisp 发凹圆角_css能实现这样的内凹圆角吗?如何实现?具体代码是!!
- 不服气不行,同样是码农,字节程序员的年薪居然达247万
- POJ-3764 01-Trie
- BUCT-2021年ACM竞赛班训练(一)2021.3.25-问题 A: 大佬的高级IDLE-题解
- 将任意自然数分解为质数的乘积(Java实现)
- 第二十六章 使用 CSP 进行基于标签的开发
- 将图片做成gif动态图
- 液晶屏偏光片的选用规则?
- 唱吧创始人:可能再过半年,这一波创业潮就彻底消失了
- 我知道你不知道,我到底知不知道?
- 服务器是干什么用的?
- linux下make menuconfig在什么目录,make menuconfig/.config/Kconfig解析
热门文章
- 2021清北毕业生去向关键词:进体制、搞教育、国内深造
- 一个模型通杀8大视觉任务,一句话生成图像、视频、P图、视频处理...都能行 | MSRA北大出品...
- 谷歌首款Tensor手机芯片,全是AI炫技,性能一笔带过
- iPhone13下周三发布,提前看剧透:刘海缩小、120Hz高刷屏、Mini又续一年…
- 鹅厂机器狗,站起来了!
- BAT华为美团头条面试考什么?这份GitHub万星资源,告诉你面试题+答案+出题人分析...
- 把视频玩出花的快手来到CVPR ,解密背后AI能力,落地空间有多大?
- PS常用快捷键就这些了,记住绘图事半功倍
- Intellij IDEA中使用MyBatis-generator 自动生成MyBatis代码
- CSS常用菜单(三)