網上看到一篇整理的非常詳細的xml文件詳解,分享一下:
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 25 <!--可以執行多個suite,@path 必填,欲引用的suitefile的絕對路徑--> 26 <suite-files> 27 <suite-file path="/path/to/suitefile1"></suite-file> 28 </suite-files> 29 <!--全局參數,@name和@value必填,分別為參數名和參數值--> 30 <parameter name="par1" value="value1"></parameter> 31 <parameter name="par2" value="value2"></parameter> 32 33 <!--方法選擇器,在suite/test中增加需要額外執行的類(根據父標簽而定),及安排執行優先級--> 34 <method-selectors> 35 <method-selector> 36 <!-- 37 @name 必填 38 @priority 選填 39 --> 40 <selector-class name="classname" priority="1"></selector-class> 41 <!-- 42 @language 必填 43 --> 44 <script language="java"></script> 45 </method-selector> 46 </method-selectors> 47 48 <!--test定義一次測試執行,以下為各屬性含義及取值 49 @name:必填,test的名字,測試報告中會有體現 50 @junit:選填,是否以Junit模式運行,可選值(true | false),默認"false" 51 @verbose:選填,命令行信息打印等級,不會影響測試報告輸出內容;可選值(1|2|3|4|5) 52 @parallel:選填,是否多線程並發運行測試;可選值(false | methods | tests | classes | instances),默認 "false" 53 @thread-count:選填,當為並發執行時的線程池數量,默認為"5" 54 @annotations:選填,獲取注解的位置,如果為"javadoc", 則使用javadoc注解,否則使用jdk5注解 55 @time-out:選填,為具體執行單元設定一個超時時間,具體參照parallel的執行單元設置;單位為毫秒 56 @enabled:選填,設置當前test是否生效,可選值(true | false),默認"true" 57 @skipfailedinvocationcounts:選填,是否跳過失敗的調用,可選值(true | false),默認"false" 58 @preserve-order:選填,順序執行開關,可選值(true | false) "true" 59 @group-by-instances:選填,是否按實例分組,可選值(true | false) "false" 60 @allow-return-values:選填,是否允許返回函數值,可選值(true | false),默認"false" 61 --> 62 <test name="testename" junit="false" verbose="3" parallel="false" thread-count="5" annotations="javadoc" 63 time-out="10000" enabled="true" skipfailedinvocationcounts="true" preserve-order="true" 64 allow-return-values="true"> 65 <!--局部參數,@name和@value必填,分別為參數名和參數值,如果參數名與全局參數一致,則覆蓋全局參數取值--> 66 <parameter name="par1" value="value1"></parameter> 67 <parameter name="par2" value="value2"></parameter> 68 <!--搭配class使用,執行class內指定組--> 69 <groups> 70 <!--定義執行組名,在run中使用 71 @name 必填,組中組的名稱 72 --> 73 <define name="xxx"> 74 <!--定義包含的測試組,測試方法屬於哪個測試組在測試代碼注釋中定義。 75 @name 必填,需要包含進組中組的組名 76 @description 選填,關於組的描述 77 @invocation-numbers 選填,執行次序或者執行次數——TODO 78 --> 79 <include name="" description="" invocation-numbers=""/> 80 <include name="" description="" invocation-numbers=""/> 81 </define> 82 <!--運行組中組的配置--> 83 <run> 84 <!--執行指定的組中組,@name必填,與define name一致--> 85 <include name=""/> 86 <!--排除指定的組中組,@name必填,與define name一致--> 87 <exclude name=""/> 88 </run> 89 <!--組中組的依賴配置--> 90 <dependencies> 91 <!--配置依賴 92 @name 必填,需要依賴其他組的組名,define中設置 93 @depends-on 必填,被依賴的組名,define中設置,可以有多個,用空格隔開 94 --> 95 <group name="" depends-on=""></group> 96 <group name="" depends-on=""></group> 97 </dependencies> 98 </groups> 99 <!--配置要執行的類,是多個class的集合--> 100 <classes> 101 <!--局部參數,@name和@value必填,分別為參數名和參數值,如果參數名與全局參數和父標簽的局部參數一致,則覆蓋全局參數和父標簽的局部參數取值--> 102 <parameter name="par1" value="value1"></parameter> 103 <parameter name="par2" value="value2"></parameter> 104 <!--多個methods的集合,@name 必填,對應class的名稱,如com.example.autotest.testcase--> 105 <class name="classname"> 106 <!--要執行的方法,如為空,則執行整個class內包含的全部方法--> 107 <methods> 108 <!--局部參數,@name和@value必填,分別為參數名和參數值,如果參數名與全局參數和父標簽的局部參數一致,則覆蓋全局參數和父標簽的局部參數取值--> 109 <parameter name="par3" value="value3"></parameter> 110 <!--類內要執行的測試方法名,在測試代碼注釋中配置,如設置inclde,則只執行該方法,其他跳過 111 @name 必填,執行方法名 112 @description 選填,方法描述 113 @invocation-number 選填,宣發執行順序或執行次數——TODO 114 --> 115 <include name="" description="" invocation-numbers=""></include> 116 <!--除了該方法外,類內其他方法都執行,@name 必填,不執行的方法名--> 117 <exclude name=""></exclude> 118 </methods> 119 <methods></methods> 120 </class> 121 </classes> 122 <!--可以執行指定包下面所有類,是多個package的匯聚--> 123 <packages> 124 <!--配置要執行的包,@name 必填,要執行的package名,如com.example.autotest--> 125 <package name=""> 126 <!--包內要執行的測試方法名,在測試代碼注釋中配置,如設置inclde,則只執行該方法,其他跳過 127 @name 必填,執行方法名 128 @description 選填,方法描述 129 @invocation-number 選填,宣發執行順序或執行次數——TODO 130 --> 131 <include name="" description="" invocation-numbers=""></include> 132 <!--除了該方法外,包內其他方法都執行,name 必填,不執行的方法名--> 133 <exclude name=""></exclude> 134 </package> 135 </packages> 136 </test> 137 <!--設置監聽的類名,可設置多個,class-name 必填,類名,如com.example.autotest.Listener--> 138 <listeners> 139 <listener class-name="classname1"/> 140 <listener class-name="classname2"/> 141 </listeners> 142 </suite>
轉載自 https://testerhome.com/topics/10093?locale=en 發表於 TesterHome