51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1383|回复: 2
打印 上一主题 下一主题

TestNG XML 标签说明

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-3-2 16:01:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在思考自动化测试活动架构,所以参照着dtd和网上别人的经验,整理了一份完整版的testng xml,给有需要的童鞋吧。至于里面标注todo的部分,这是我在网上没找到令我满意
的说明,准备以后有时间试验过再确定的内容。以上。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
  3. <!--suite(测试套件)为根路径,仅允许出现1次,是多个test(测试用例)的集合,以下为各属性含义及取值
  4.     @name 必填,标记suite的名称
  5.     @junit 选填,是否以junit模式运行,可选值(true|false) 默认值"false"
  6.     @verbose 选填,命令行信息打印等级(与测报内容无关),可在测试代码注释中配置,可选值(1|2|3|4|5)
  7.     @parallel 选填,是否多线程并发运行测试,可选值(false | methods | tests | classes | instances),默认 "false"
  8.     @thread-count 选填,填写值为正整数,当为并发执行时的线程池数量,默认为"5"
  9.     @configfailurepolicy 一旦Before/After Class/Methods这些方法失败后,是继续执行测试还是跳过测试;可选值 (skip | continue),默认"skip
  10.     @annotations="javadoc" 获取注解的位置,如果为"javadoc", 则使用javadoc注解,否则使用jdk注解
  11.     @time-out 为具体执行单元设定一个超时时间,具体参照parallel的执行单元设置;单位为毫秒
  12.     @skipfailedinvocationcounts 是否跳过失败的调用,可选值(true | false),默认"false"
  13.     @data-provider-thread-count 并发执行时data-provider的线程池数量,默认为"10"
  14.     @object-factory 一个实现IObjectFactory接口的类,用来实例测试对象
  15.     @allow-return-values="true" 是否允许返回函数值,可选值(true | false),默认"false"
  16.     @preserve-order:顺序执行开关,可选值(true | false) "true"
  17.     @group-by-instances:是否按实例分组,可选值(true | false) "false"
  18.     @guice-stage 支持使用JSR-330的@Inject注解来配置运行时提供的实例
  19.     @parent-module 和Guice框架有关,只运行一次,创建一个parent injector给所有guice injectors
  20.     -->
  21. <suite name="suitename" junit="false" verbose="3" parallel="false" thread-count="5" configfailurepolicy="skip"
  22.        annotations="javadoc" time-out="10000" skipfailedinvocationcounts="true" data-provider-thread-count="5"
  23.        object-factory="classname" allow-return-values="true" preserve-order="true" group-by-instances="false">

  24.     <!--可以执行多个suite,@path 必填,欲引用的suitefile的绝对路径-->
  25.     <suite-files>
  26.         <suite-file path="/path/to/suitefile1"></suite-file>
  27.     </suite-files>
  28.     <!--全局参数,@name和@value必填,分别为参数名和参数值-->
  29.     <parameter name="par1" value="value1"></parameter>
  30.     <parameter name="par2" value="value2"></parameter>

  31.     <!--方法选择器,在suite/test中增加需要额外执行的类(根据父标签而定),及安排执行优先级-->
  32.     <method-selectors>
  33.         <method-selector>
  34.             <!--
  35.                 @name 必填
  36.                 @priority 选填
  37.                 -->
  38.             <selector-class name="classname" priority="1"></selector-class>
  39.             <!--
  40.                 @language 必填
  41.                 -->
  42.             <script language="java"></script>
  43.         </method-selector>
  44.     </method-selectors>

  45.     <!--test定义一次测试执行,以下为各属性含义及取值
  46.         @name:必填,test的名字,测试报告中会有体现
  47.         @junit:选填,是否以Junit模式运行,可选值(true | false),默认"false"
  48.         @verbose:选填,命令行信息打印等级,不会影响测试报告输出内容;可选值(1|2|3|4|5)
  49.         @parallel:选填,是否多线程并发运行测试;可选值(false | methods | tests | classes | instances),默认 "false"
  50.         @thread-count:选填,当为并发执行时的线程池数量,默认为"5"
  51.         @annotations:选填,获取注解的位置,如果为"javadoc", 则使用javadoc注解,否则使用jdk5注解
  52.         @time-out:选填,为具体执行单元设定一个超时时间,具体参照parallel的执行单元设置;单位为毫秒
  53.         @enabled:选填,设置当前test是否生效,可选值(true | false),默认"true"
  54.         @skipfailedinvocationcounts:选填,是否跳过失败的调用,可选值(true | false),默认"false"
  55.         @preserve-order:选填,顺序执行开关,可选值(true | false) "true"
  56.         @group-by-instances:选填,是否按实例分组,可选值(true | false) "false"
  57.         @allow-return-values:选填,是否允许返回函数值,可选值(true | false),默认"false"
  58.         -->
  59.     <test name="testename" junit="false" verbose="3" parallel="false" thread-count="5" annotations="javadoc"
  60.           time-out="10000" enabled="true" skipfailedinvocationcounts="true" preserve-order="true"
  61.           allow-return-values="true">
  62.         <!--局部参数,@name和@value必填,分别为参数名和参数值,如果参数名与全局参数一致,则覆盖全局参数取值-->
  63.         <parameter name="par1" value="value1"></parameter>
  64.         <parameter name="par2" value="value2"></parameter>
  65.         <!--搭配class使用,执行class内指定组-->
  66.         <groups>
  67.             <!--定义执行组名,在run中使用
  68.                 @name 必填,组中组的名称
  69.             -->
  70.             <define name="xxx">
  71.                 <!--定义包含的测试组,测试方法属于哪个测试组在测试代码注释中定义。
  72.                     @name 必填,需要包含进组中组的组名
  73.                     @description 选填,关于组的描述
  74.                     @invocation-numbers 选填,执行次序或者执行次数——TODO
  75.                     -->
  76.                 <include name="" description="" invocation-numbers=""/>
  77.                 <include name="" description="" invocation-numbers=""/>
  78.             </define>
  79.             <!--运行组中组的配置-->
  80.             <run>
  81.                 <!--执行指定的组中组,@name必填,与define name一致-->
  82.                 <include name=""/>
  83.                 <!--排除指定的组中组,@name必填,与define name一致-->
  84.                 <exclude name=""/>
  85.             </run>
  86.             <!--组中组的依赖配置-->
  87.             <dependencies>
  88.                 <!--配置依赖
  89.                     @name 必填,需要依赖其他组的组名,define中设置
  90.                     @depends-on 必填,被依赖的组名,define中设置,可以有多个,用空格隔开
  91.                     -->
  92.                 <group name="" depends-on=""></group>
  93.                 <group name="" depends-on=""></group>
  94.             </dependencies>
  95.         </groups>
  96.         <!--配置要执行的类,是多个class的集合-->
  97.         <classes>
  98.             <!--局部参数,@name和@value必填,分别为参数名和参数值,如果参数名与全局参数和父标签的局部参数一致,则覆盖全局参数和父标签的局部参数取值-->
  99.             <parameter name="par1" value="value1"></parameter>
  100.             <parameter name="par2" value="value2"></parameter>
  101.             <!--多个methods的集合,@name 必填,对应class的名称,如com.example.autotest.testcase-->
  102.             <class name="classname">
  103.                 <!--要执行的方法,如为空,则执行整个class内包含的全部方法-->
  104.                 <methods>
  105.                     <!--局部参数,@name和@value必填,分别为参数名和参数值,如果参数名与全局参数和父标签的局部参数一致,则覆盖全局参数和父标签的局部参数取值-->
  106.                     <parameter name="par3" value="value3"></parameter>
  107.                     <!--类内要执行的测试方法名,在测试代码注释中配置,如设置inclde,则只执行该方法,其他跳过
  108.                         @name 必填,执行方法名
  109.                         @description 选填,方法描述
  110.                         @invocation-number 选填,宣发执行顺序或执行次数——TODO
  111.                         -->
  112.                     <include name="" description="" invocation-numbers=""></include>
  113.                     <!--除了该方法外,类内其他方法都执行,@name 必填,不执行的方法名-->
  114.                     <exclude name=""></exclude>
  115.                 </methods>
  116.                 <methods></methods>
  117.             </class>
  118.         </classes>
  119.         <!--可以执行指定包下面所有类,是多个package的汇聚-->
  120.         <packages>
  121.             <!--配置要执行的包,@name 必填,要执行的package名,如com.example.autotest-->
  122.             <package name="">
  123.                 <!--包内要执行的测试方法名,在测试代码注释中配置,如设置inclde,则只执行该方法,其他跳过
  124.                     @name 必填,执行方法名
  125.                     @description 选填,方法描述
  126.                     @invocation-number 选填,宣发执行顺序或执行次数——TODO
  127.                     -->
  128.                 <include name="" description="" invocation-numbers=""></include>
  129.                 <!--除了该方法外,包内其他方法都执行,name 必填,不执行的方法名-->
  130.                 <exclude name=""></exclude>
  131.             </package>
  132.         </packages>
  133.     </test>
  134.     <!--设置监听的类名,可设置多个,class-name 必填,类名,如com.example.autotest.Listener-->
  135.     <listeners>
  136.         <listener class-name="classname1"/>
  137.         <listener class-name="classname2"/>
  138.     </listeners>
  139. </suite>
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-15 16:02 , Processed in 0.064530 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表