TestNG.XML初級指南


這是一篇DTD文檔的概述


簡單說明:

測試代碼中在需要測試的方法前加上注釋符,例如:

package com.yiban.test;
public class test2 {
  @Parameters({ "first-name" }) //參數   @Test(groups={"g1","g2"}) //組名   public void test001() throws Exception {     System.out.println("test001");   }
}

 XML文件寫法

<test name="xxxx">
  <!-- 參數定義的方法 -->
  <parameter name="first-name" value="Cedric"/>

  <!-- groups的用法,前提是需要存在classes的組,否則所有方法不被運行 -->
  <groups>
  <!-- 定義組中組的方法 -->
    <define name="groups_name">
      <include name="group1"/>
      <include name="group2"/>
    </define>

    <run>
      <!-- 此處用組名來區別 -->
      <inclue name="groups_name" />
      <exclue name="groups_name" />
      </run>
  </groups>

  <!-- classes的用法,classes中包含類名,類名底下可以包含方法名或排除方法名 -->
  <classes>
    <class name="class1">
      <methods>
        <!-- 此處用方法名來區別 -->
        <inclue name="method_name" />
        <exclue name="method_name" />
      </methods>
    </class>
  </classes>
</test>

 

 

以下詳細XML規則

-結-構-樹

suite
--tests
----parameters
----groups
------definitions
------runs
----classes
--parameters

 

**suite元素
suite 是testng.xml文檔中最上層的元素

< suite (groups?,(listeners|packages|test|parameter|method-selectors|suite-files)*) >

屬性: 參數列表(“”中是默認值,CDATA代表字符串)

name suite的名字(他會出現在測試報告中)
junit 是否以junit模式運行
verbose 在控制台中如何輸出,這個設置不影響html版本的測試報告
parallel 是否使用多線程測試(可能加速測試)
configfailurepolicy 是否在運行失敗了一次后繼續嘗試或跳過
 thread-count  如果設置了parallel,可以設置線程數
 annotations  有‘javadoc’的時候尋找,沒有的話使用jdk5的注釋
 time-out   在終止method (如果parallel="methods") 或者test (如果parallel="tests")之前設置以毫秒為單位的等待時間
 skipfailedinvocationcounts  是否跳過失敗的調用
data-provider-thread-count 提供一個整數線程池的范圍為了使用parallel data
object-factory 一個繼承IObjectFactory的類,被用來實例化測試對象
allow-return-values 如果設置true,將會運行測試用例並返回值



< suite
name CDATA #必填項
junit (true | false) "false"
verbose CDATA #隱含
parallel (false | methods | tests | classes | instances) "false"
configfailurepolicy (skip | continue) "skip"
thread-count CDATA "5"
annotations CDATA #隱含
time-out CDATA #隱含
skipfailedinvocationcounts (true | false) "false"
data-provider-thread-count CDATA "10"
object-factory CDATA #隱含
group-by-instances (true | false) "false"
preserve-order (true | false) "true"
allow-return-values (true | false) "false"
>

 

**suite-files元素

一個XML文檔的列表包含更多的suite描述

< suite-files (suite-file)* >
< suite-file ANY >

參數列表

< suite-file
path CDATA #必填項
>

 

**Parameters元素

Parameters 可以在suite或者test級別被定義.
Parameters 定義在test級別時將覆蓋sutie級別的同名參數
Parameters 被用來聯系java方法參數的實際值,並在這里定義.

< parameter ANY>

參數列表

< parameter
name CDATA #必填項
value CDATA #必填項 >

 

**method-selectors元素

方法選擇器定義了那些方法要運行,他們必須繼承org.testng.IMethodSelector

< method-selectors (method-selector*) >
< method-selector ((selector-class)*|script) >
< selector-class ANY>

參數列表:

< selector-class
name CDATA #必填項
priority CDATA #隱含
>

 

**script元素

< script ANY>

參數列表:

< script
language CDATA #必填項
>

 

**test元素

一個test包含參數和classes,另外,你可以定義組(組中組)

< test (method-selectors?,parameter*,groups?,packages?,classes?) >

屬性:

name test的名字(他會出現在測試報告中)
junit 是否以junit模式運行
verbose 在控制台中如何輸出,這個設置不影響html版本的測試報告,默認值: suite 級別的verbose
parallel 是否使用多線程測試(可能加速測試)
thread-count  如果設置了parallel,可以設置線程數
annotations  有‘javadoc’的時候尋找,沒有的話使用jdk5的注釋
time-out  在終止method (如果parallel="methods") 或者test (如果parallel="tests")之前設置以毫秒為單位的等待時間
enabled  設置是否運行當前test,默認值:true
skipfailedinvocationcounts  是否跳過錯誤的調用
prserve-order  如果設置true,classes會按照XML文檔中的順序執行
allow-return-values  如果設置true,將會運行測試用例並返回值

  

屬性列表:

< test
name CDATA #必填項
junit (true | false) "false"
verbose CDATA #隱含
parallel CDATA #隱含
thread-count CDATA #隱含
annotations CDATA #隱含
time-out CDATA #隱含
enabled CDATA #隱含
skipfailedinvocationcounts (true | false) "false"
preserve-order (true | false) "true"
group-by-instances (true | false) "false"
allow-return-values (true | false) "false"
>

 

**groups元素

定義包含在測試中要運行的組(組中組)

< groups (define*,run?,dependencies?) >

 

 

**define元素

< define (include*)>

 屬性列表

< define name CDATA #必填項 >

 

**include元素

定義組中組

<include ANY>

 屬性列表

< include
name CDATA #必填項
description CDATA #隱含
invocation-numbers CDATA #隱含>

 

**exclude元素

定義排除的組

< exclude ANY>

 屬性列表

< exclude
name CDATA #必填項
>

 

**run元素
定義那些group需要被運行

< run (include?,exclude?)* >

 

**dependencies元素

< dependencies (group*)>

 

**group元素

< group ANY>

 屬性列表

< group
name CDATA #必填項
depends-on CDATA #必填項
>

 

**classes元素
包含在此次test中的classes列表

< classes (class*) >

 

**class元素

< class (methods*) >

 屬性列表:

< class name CDATA #必填項 >

 

**packages元素
包含在此次test中的packages列表

< packages (package*) >

 

**package元素
如果package名字結尾包含.* ,則所有的子包也被包括其中

< package (include?,exclude?)*>

 屬性列表:

< package name CDATA #必填項 >

 

**methods元素
包含或排除在此次test中的methods列表

< methods (include?,exclude?,parameter?)* >

 

**listeners元素
將被傳給TestNG的監聽列表

< listeners (listener*) >

 

**listener元素

< listener ANY>

 屬性列表

<listener
class-name CDATA #必填項
>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM