zoukankan      html  css  js  c++  java
  • testng的xml文件说明(TestNG DTD)

    testNG启发自JUnit和NUnit的一种测试框架,通过使用testNG使的测试更简单。,比如如下的一些特点:
    1.通过注释来管理测试
    2.多线程并发执行测试,且是安全的
    3.支持数据驱动测试
    4.支持在多样化的平台上使用(Eclipse、IDEA、Maven等)
    5.嵌入了BeanShell,使的更具灵活性
    6.支持依赖
     
    一、testNG的xml文件的结构
    简单的大概结构如下:
    <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>
     
    二、文档具体的元素说明
    <suite>
    说明:一个xml文件只能有一个<suites>,,是一个xml文件的根级
    <suite>由<test>和<parameters>组成
    参数说明:
     
    参数 说明 使用方法 参数值
    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
     
    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将并行执行相同实例下的所有方法在不同的县城里
     
    parent-module和guice-stage和Guice框架有关,testNG 6对Guice框架提供了支持,我没用过这个框架,所以这两个参数没看懂╮(╯▽╰)╭
     
    -<suite-file>
    说明:引入外部的xml文件(地址由path参数决定,path必填项),将引入的xml与当前的xml文件一起使用
    声明方法:
    <suite-files>
         <suite-file path="/path/suitefile1"></suite-file>
    </suite-files>
     
    -<test>
    说明:一个<suite>下可以有多个<test>,可以通过<suite>的parallel="tests"来进行并行测试,必须和thread-count配套使用,否则是无效参数
    <test>由<parameters>、<groups>、<classes>三部分组成
    参数说明:
     
    参数 说明 使用方法 参数值
    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
     
    --<parameter>
    说明:提供测试数据,有name和value两个参数
    声明方法:<parameter name = "parameter_name" value = "parameter_value "/>
    testng.xml文件中的<parameter>可以声明在<suite>或者<test>级别,在<test>下的<parameter>会覆盖在<suite>下声明的同名变量
     
    --<method-selectors>
    说明:方法选择器定义了哪些类的方法需要去执行,类必须继承自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>
    备注:<method-selectors>这个我没用过,所以了解,如果有错的欢迎指出来~
     
    --<groups>
    说明:要运行的组,可以自定义一个组,可以包括要执行的,还排除要执行的方法。必须和<classes>配套使用,从下面的类中找到对应名字的方法
    <groups>由<difine>和<run>、<dependencies>三部分组成。<diffine>可以将group组成一个新组,包括要执行和不执行的大组;<run>要执行的方法;<dependencies>指定了某group需要依赖的group(比如下面的例子,group1需要依赖group2和group3先执行)。
    声明方法:
    <groups>
         <define name ="all">
              <include name ="testgroup1"/>
              <exclude name ="testgroup2'/>
         </define>
         <run>
              <include name ="all"/>
              <include name ="testmethod1"/>
              <exclude name="testmethod2"/>
         </run>
         <dependencies>
              <group name ="group1" depends-on="goup2 group3"/>
         </dependencies>
    </groups>
     
    --<classes>
    说明:方法选择器,要执行的方法写在这里,参数有name和priority。
    注释:
    1.<classes>下必须写要执行的<class>,否则不会执行任何内容,如果填写了class没有写methods,会按照填写的class的下的注释@Test去执行所有的方法
    2.<classes>下的<methods>如果填写了<include>,那只会执行所填写的方法,没有填写的方法不会去执行
     
    声明方法:
    <classes>
         <class name="要执行的class名">
              <methods>
                   <include name ="要执行的方法名"></include>
              </methods>
         </class> 
    </classes>
     
    --<packages>
    说明:<packages>指定包名代替类名。查找包下的所有包含testNG annotation的类进行测试
    声明方法:
    <packages>
         <package name="packagename"/>
         <package name="packagename">
              <include name="methodname"/>
              <exclude name="methodname"/>
         </package>
    </packages>
     
    <listener>
    说明:指定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>
     
  • 相关阅读:
    【校招面试 之 C/C++】第23题 C++ STL(五)之Set
    Cannot create an instance of OLE DB provider “OraOLEDB.Oracle” for linked server "xxxxxxx".
    Redhat Linux安装JDK 1.7
    ORA-10635: Invalid segment or tablespace type
    Symantec Backup Exec 2012 Agent for Linux 卸载
    Symantec Backup Exec 2012 Agent For Linux安装
    You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1
    YourSQLDba介绍
    PL/SQL重新编译包无反应
    MS SQL 监控数据/日志文件增长
  • 原文地址:https://www.cnblogs.com/meitian/p/5221202.html
Copyright © 2011-2022 走看看