(三)TestNG學(xué)習(xí)之路—TestNG.xml/YAML

目錄

(一)TestNG學(xué)習(xí)之路—HelloWorld入門
(二)TestNG學(xué)習(xí)之路—注解及屬性概覽
(三)TestNG學(xué)習(xí)之路—TestNG.xml/YAML
(四)TestNG學(xué)習(xí)之路—注解詳述之@Test
(五)TestNG學(xué)習(xí)之路—注解詳述之參數(shù)化
(六)TestNG學(xué)習(xí)之路—注解詳述之@Factory
(七)TestNG學(xué)習(xí)之路—注解詳述之忽略測(cè)試
(八)TestNG學(xué)習(xí)之路—注解詳述之并發(fā)
(九)TestNG學(xué)習(xí)之路—失敗測(cè)試重跑
(十)TestNG學(xué)習(xí)之路—編碼執(zhí)行TestNG
(十一)TestNG學(xué)習(xí)之路—BeanShell高級(jí)用法
(十二)TestNG學(xué)習(xí)之路—注解轉(zhuǎn)換器
(十三)TestNG學(xué)習(xí)之路—方法攔截器
(十四)TestNG學(xué)習(xí)之路—TestNG監(jiān)聽器
(十五)TestNG學(xué)習(xí)之路—依賴注入
(十六)TestNG學(xué)習(xí)之路—測(cè)試報(bào)告
(十七)基于TestNG+Rest Assured+Allure的接口自動(dòng)化測(cè)試框架

前言

文章《TestNG學(xué)習(xí)之路—HelloWorld入門》提到了ant、xml、命令行三種方式來執(zhí)行測(cè)試,該篇文章將詳細(xì)講述xml執(zhí)行方式。

testng.xml詳解

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!--suite有以下屬性:
name:suite名稱,測(cè)試報(bào)告中展現(xiàn)
verbose: 在控制臺(tái)中如何輸出,該設(shè)置不影響測(cè)試報(bào)告
allow-return-values:如果設(shè)置為false,被@Test注解且有return的方法被忽略執(zhí)行
annotations:如果為"javadoc", 則使用javadoc注解,否則使用jdk注解
configfailurepolicy:字典:continue,skip,如果@Before*方法失敗,TestNG是否應(yīng)該繼續(xù)執(zhí)行套件中的其余測(cè)試,默認(rèn)為skip
data-provider-thread-count:并發(fā)執(zhí)行data-provider的線程數(shù),默認(rèn)大小為10
group-by-instances:默認(rèn)情況下,依賴方法按類分組。例如,如果方法b()依賴于方法a(),并且您有幾個(gè)包含這些方法的類實(shí)例(因?yàn)閿?shù)據(jù)提供者的工廠),
那么調(diào)用順序?qū)椋簊ignIn("us"),signIn("uk"),signOut("us"),,signOut("uk")。group-by-instances設(shè)置為true的話,調(diào)用順序?qū)椋簊ignIn("us"),signOut("us"),signIn("uk"),signOut("uk")
guice-stage:創(chuàng)建父注入器的stage
junit:是否以junit模式運(yùn)行
object-factory:用于實(shí)現(xiàn)IObjectFactory的類,實(shí)例化測(cè)試對(duì)象
parallel:是否多線程并發(fā)運(yùn)行測(cè)試,默認(rèn)為false,字典:classes,methods,instances,tests,true,false
parent-module:用于創(chuàng)建所有g(shù)uice注入器的父注入器的模塊
preserve-order:默認(rèn)情況下,TestNG將按照在XML文件配置的順序運(yùn)行測(cè)試。如果希望以不可預(yù)知的順序運(yùn)行文件中列出的類和方法,可將preserve-order屬性設(shè)置為false
skipfailedinvocationcounts:是否跳過失敗的調(diào)用
thread-count:使用并行模式,要使用的線程池的大小。
time-out:為具體執(zhí)行單元設(shè)定一個(gè)超時(shí)時(shí)間,方法(parallel="methods")或測(cè)試(parallel="tests")
-->
<suite name="Suite" verbose="1">

    <!--一個(gè)suite可以包含多個(gè)test,test有以下屬性:
    name:這個(gè)測(cè)試的名稱(將出現(xiàn)在報(bào)告中)
    annotations:同suite套件屬性
    allow-return-values:同suite套件屬性
    verbose:同suite套件屬性
    enabled:啟用/禁用當(dāng)前測(cè)試的標(biāo)志。默認(rèn)值:true
    group-by-instances:同suite套件屬性
    junit:同suite套件屬性
    parallel:同suite套件屬性
    preserve-order:同suite套件屬性
    skipfailedinvocationcounts:同suite套件屬性
    thread-count:同suite套件屬性
    time-out:同suite套件屬性
    -->
    <test name="test">
        <!--指定執(zhí)行包-->
        <packages>
            <!--包名稱-->
            <package name="com">
            </package>
        </packages>
    </test>

    <!--testng.xml中只能設(shè)置一個(gè)<suite>標(biāo)簽,可通過<suite-files >標(biāo)簽實(shí)現(xiàn)多個(gè)測(cè)試集設(shè)置。-->
    <suite-files>
        <suite-file path="testNG.xml"/>
        <suite-file path="testNG.xml"/>
    </suite-files>

    <!--設(shè)置監(jiān)聽器,后續(xù)文章詳解-->
    <listeners>
        <listener class-name="TestNGHelloWorld1"/>
    </listeners>

    <!--方法攔截器,后續(xù)文章詳解-->
    <method-selectors>
        <method-selector>
            <selector-class name="TestNGHelloWorld1"/>
        </method-selector>
    </method-selectors>

    <!--方法攔截器,后續(xù)文章詳解-->
    <method-selectors>
        <method-selector>
            <script language="java"/>
        </method-selector>
    </method-selectors>

    <test name="TestNG1">
        <groups>
            <!--組中組,即test4包含了test1和test3兩個(gè)組-->
            <define name="test4">
                <include name="test1"/>
                <include name="test3"/>
            </define>

            <!--運(yùn)行test4組,不運(yùn)行test2組-->
            <run>
                <include name="test4"/>
                <exclude name="test2"/>
            </run>

            <!--test3組依賴于test1,test2組,多個(gè)依賴用空格隔開-->
            <dependencies>
                <group name="test3" depends-on="test1 test2"/>
            </dependencies>
        </groups>

        <!--類-->
        <classes>
            <class name="TestNGHelloWorld1"/>
        </classes>
    </test> <!-- TestNG -->

    <test name="TestNG2">
        <!--入?yún)ⅲ謩e為參數(shù)名和參數(shù)值-->
        <parameter name="str" value="Test1"/>

        <classes>
            <class name="TestNGHelloWorld1">
                <!--類中的方法-->
                <methods>
                    <!--執(zhí)行該方法-->
                    <include name="helloWorldTest1"/>
                    <!--不執(zhí)行該方法-->
                    <exclude name="helloWorldTest2"/>
                </methods>
            </class>
        </classes>

    </test>
</suite> 

YAML

testNG支持YAML作為指定套件文件的另一種方法。例如,以下XML文件:

<suite name="SingleSuite" verbose="2" thread-count="4">
 
  <parameter name="n" value="42" />
 
  <test name="Regression2">
    <groups>
      <run>
        <exclude name="broken" />
      </run>
    </groups>
 
    <classes>
      <class name="test.listeners.ResultEndMillisTest" />
    </classes>
  </test>
</suite>

對(duì)應(yīng)的YAML版本如下:

name: SingleSuite
threadCount: 4
parameters: { n: 42 }
 
tests:
  - name: Regression2
    parameters: { count: 10 }
    excludedGroups: [ broken ]
    classes:
      - test.listeners.ResultEndMillisTest

參考資料

testNG.xml各參數(shù)及屬性詳解
testNG官網(wǎng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,481評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評(píng)論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,697評(píng)論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,182評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,406評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,933評(píng)論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,772評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,973評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,209評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評(píng)論 1 285
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,644評(píng)論 3 391
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,953評(píng)論 2 373

推薦閱讀更多精彩內(nèi)容