gtest测试框架使用详解_测试框架TestNG使用介绍
近期接觸到了一個比較全面的基于Java的接口自動化測試框架,作為一名Java小白,所以打算研究一下,順帶學習學習Java,該測試框架的邏輯控制層使用的HttpClient + TestNG。
在本期中,給大家分享一下TestNG測試框架的基礎知識,使用TestNG的優點,TestNG的基本注解如何使用,套件、忽略、異常、依賴、參數化、超時等測試該如何進行。
一、TestNG基本介紹
TestNG是Java中的一個測試框架,是一個目前很流行實用的單元測試框架,有完善的用例管理模塊,配合Maven能夠很方便管理依賴第三方插件。使用TestNG可以做功能、接口、單元、集成的自動化測試,最常見的是結合selenium做功能自動化測試,它使用Java注釋去寫測試方法。
測試人員一般用TestNG來寫自動化測試,開發人員一般用Junit寫單元測試,TestNG適合測試人員使用的原因:
比Junit涵蓋功能更全面的測試框架;
Junit更適合隔離性比較強的單元測試;
TestNG更適合復雜的集成測試。
編寫一個測試的過程包含以下步驟:
編寫測試的業務邏輯并在代碼中插入TestNG annotation;
將測試信息添加到testng.xml文件或build.xml中;
運行TestNG。
二、TestNG使用
TestNG應用上相對來說比較簡單,把它的注解理解了,相當于會了一大半了。
1. 在Maven中引用TestNG
使用Maven作為項目管理工具,需要在pom.xml中添加以下依賴,將groupId、artifactId和version引進來后,就可以使用Maven框架進行自動下載和使用。
? ? ? ? org.testng
? ? ? ? testng
? ? ? ? 6.10
2. 在IDEA中創建module
新建一個文件夾用于該項目:AutoTest。使用IntelliJ IDEA打開該文件夾(File—>open),在該文件夾上面點擊右鍵—>New—>module(module意思是它都歸這個工程管)—>選擇Maven點擊Next—>填寫GroupId和ArtifactId,點擊Next—>創建了一個module,點擊Finished(GroupId:一般是域名的反寫,也作為項目中類的包名,是main目錄里java的目錄結構;ArtifactId:工程名,也就是根文件夾名)
創建了一個module,被認為工程的標志,根文件夾名前右下角為藍色的,java前也是藍色的,resources資源目錄文件是圖中的文件標志,工程目錄結構如圖所示:
3. 最基本的注解@Test
Module已創建完畢后,就可以開始了解TestNG的基本注解啦。
1)在java文件上右擊—>new—>Package,創建一個包,包名:com.test.testng。(在公司,開發一個項目的時候每個功能模塊肯定是放在某個包下,一般包名是以:最高域名.公司名/個人名.模塊名)
2)在包中創建一個類,這個類就是為了運行TestNG里的代碼創建的。點擊包右鍵—>new—>Java Class,輸入類名:BasicAnnotation—>OK
3)在pom中引用TestNG。TestNG與IDEA集成的比較好的一點是:假設在pom中沒引用TestNG,也會進行提示。
4)創建一個方法:testCase1,在方法前加“@Test”,是最基本的注解,用來把方法標記為測試的一部分。
在@Test為紅色時,說明沒有import對應的方法,在此我們可以進行設置一下自動優化導入包:
File—>settings—>Editor—>General—>Auto Import,將下圖中1和2 進行勾選,1:IDEA將在我們寫代碼的時候自動棒我們導入需要用到的包,但是有多個同名的類調用不同的包,還是需要手動(Alt+Enter)設置。2:IDEA將在我們寫代碼的時候自動幫我們優化導入的包,比如自動去掉一些沒有用的包。
4. 注解之@BeforeMethod和@AfterMethod
除了最基本的注解外,還有標簽可以進行標注在這個方法之前或者之后運行。
創建兩個方法:beforeMethod和afterMethod, 同時再創建一個testCase2方法—>Run類,輸出內容可以更直觀理解。注:輸入sout回車,即可輸出System.out.println()。
可以看到,BeforeMethod/AfterMethod在每個方法運行之前/之后都會運行一次。在以后寫測試用例時,在測試方法之前/之后必須要運行的都可以寫到BeforeMethod/AfterMethod里。
5. 注解之@BeforeClass和@AfterClass
@BeforeClass和@AfterClass是在類運行之前和之后的注解。
創建兩個方法:beforeClass和afterClass—>Run類,如下圖所示:
@BeforeClass和@AfterClass使用場景舉例:在類運行前,是否需要變量賦值、初始化對象等,寫完后其它方法里就都可以使用了。
6. 注解之@BeforeSuite和@AfterSuite
在注解中,執行順序非常非常重要。測試套件注解:創建兩個方法beforeSuite和afterSuite—>Run類,結果如下圖所示。
根據結果可以看到:Suite把class包裹起來了,說明類在運行之前運行了Suite,Suite可以包含多個Class,類是屬于某個套件之下的。
7. 套件測試
舉例講解一下TestNG里的套件測試,雖然在TestNG里套件測試用到的相對較少,但是也要了解下滴,步驟如下:
1)?之前在java文件中創建了一個包com.test.testng,現在在該包里新建一個包,管理所有套件測試代碼(New—>PacKage,包名可以起為:suite)
2)?在suite里創建一個類(New—>Java Class:SuiteConfig-配置類),SuiteConfigs 為了進行所有測試套件的配置,在這兒寫測試的套件之前需要運行的方法。
3)?再在suite包中創建一個類,以登錄測試為例,(New—> Java Class:LoginTest-登錄成功-邏輯控制類),在這兒寫測試主要Test標簽下面包含的那些方法。
4)?在resources目錄下創建testng.xml配置文件,一般來說配置文件叫tesng.xml,但是不是必須的,也可以叫其它名。testing.xml其實是標準的xml文件,實際上與SuiteConfig和LoginTest是有關聯關系的。
5)?打開SuiteConfig類,創建兩個方法:beforeSuite和afterSuite。
6)?再在Suite包中創建一個類:PayTest-支付成功,與LoginTest相當于一個測試組的,比較好區分。到此為止:目錄結構如下圖所示:
7)?打開LoginTest,寫入方法:loginSogouMall,登錄成功。
8)?打開PayTest,寫入方法paySuccess,支付成功。
9)?打開配置文件testng.xml,根目錄為suite,寫入內容如下圖所示,此處需要注意test標簽必須定義一個名字。Run testing.xml后,根據運行結果可以看到執行順序為1-2-3-4。
8. 忽略測試
忽略測試是指本次測試執行中不想要執行的測試方法,示例如下。
1)在包com.test.testng中創建一個類,New-Java Class:IgnoreTest;
2)在IgnoreTest類中創建兩個方法:ignore1和ignore2,根據輸出結果可以看到,在@Test標簽后加入屬性(enabled=false),則可以忽略此測試方法,默認情況下enabled為true。
9. 組測試中的方法分組測試
首先介紹一下方法上分組,將方法進行歸類。
1)?在包com.test.testng新建一個包,管理所有套件測試代碼(New—>PacKage,包名可以起為:groups);
2)在groups包中新建一個類(New—>Java Class,方法名:GroupsOnMethod);
3)?創建4個方法,如下圖中所示,注意需要在@Test標簽中添加屬性groups;
4)?再創建2個方法,如下圖所示,在@BeforeGroups和@AfterGroups標簽后需要加入分組的名字。
5)?運行類,運行結果為:
6)?通過此種做法,可以將很多個測試方法歸類到一個組中,之后進行相關操作。
10. 組測試中的類分組測試
上節說的組分組,本節介紹一下類分組,將整個類文件進行分組。
1)在groups包中,創建3個類:GroupsOnClass1;GroupsOnClass2;GroupsOnClass3;
2)在GroupsOnClass1中,創建2個方法,如下圖所示,此時需要注意的是@Test標簽是寫在類上的(標簽也是可以寫在類上面的),之后添加屬性groups;
3)?在GroupsOnClass2中,創建2個方法,與GroupsOnClass1相似,相當于兩個班的學生;
4)?在GroupsOnClass3中,創建2個方法,如下圖所示;
5)在resources目錄中創建一個xml文件:GroupsOnClass.xml,用該文件進行驅動,內容和運行結果如下圖所示,運行了所有的組;
6)?只運行一部分組,書寫及配置方法,如下圖所示,結果只運行groups名字為stu的類。
11. 異常測試
在我們期望結果為某一個異常的時候,會用到異常測試。比如:傳入某些不合法的參數,程序拋出異常。
1)新建一個類,ExpectedException;
2)創建2個方法,如下圖所示,異常測試中,使用到了@Test標簽中的expectedExceptions屬性,根據結果可以看到成功了一條(即方法2),需要在方法中加入語句throw new RuntimeException(),需要注意的是,該語句后的內容不運行,所以一定要注意順序。
12. 依賴測試
TestNGINX依賴方法是指本個測試方法執行的時候依賴于其它方法。舉例說明:
1)創建一個Java類:DependTest;
2)創建2個方法:test1和test2,其中test2依賴于test1,即test1要先執行,如果test1失敗,則test2不執行。此處用到@Test標簽的屬性dependsOnMethods,具體寫法如下圖所示,只運行test2,結果可以看到test1也被執行了;
3)在test1中加入語句:thrownew RuntimeException(),拋出異常,這時候再運行test2結果會提示1 failed,1 ignored。當做依賴測試的時候,被依賴的方法若執行失敗,則依賴的方法就會被忽略掉不再執行,實際場景中可以做前置條件的時候使用。
13. 參數化測試-xml文件參數化
TestNGINX允許在TestMethod以及@Before/After類注解、@Factory類注解的方法中傳入參數。參數傳遞的方式有兩種,一種是借助xml文件配置,另一種是以編碼的方式傳遞參數。本小結介紹借助xml文件配置的方式。示例:
1)新建一個包parameter(New->Package);
2)新建一個類ParameterTest,類中新建一個方法parameTest,如下圖所示,此處用到了一個新標簽:@Parameters;
3)在resources目錄下,新建一個xml配置文件,用于傳參,內容如下圖所示,即可運行成功。
14. 參數化測試-DataProvider參數化
上小結講述了如何通過xml傳遞參數,本節講述另一種方式。
1)?新建一個類DataProviderTest;
2)?新建兩個方法,testDataprovide和ProviderData,ProviderData方法提供數據來源,返回形式Object。注意testDataprovide方法上@Test標簽中dataProvider的屬性值與ProviderData方法上@DataProvider標簽中name的屬性值要一致。
以上就是使用DataProvider如何傳數據,除此之外,DataProvider支持根據方法進行參數傳遞,通過不同的方法傳遞不同的參數,示例:
新建三個方法:test1、test2和methodDataTest,methodDataTest方法中必須填入Methodmethod,代表自動會將test1和test2方法傳遞進來,針對不同的方法名傳遞不同的參數。
15. 超時測試
超時測試比較簡單,主要是使用到@Test標簽中的timeOut屬性,單位為毫秒,示例:
1)新建一個類TimeOutTest;
2)新建兩個方法,testSuccess和testFail,方法一在3000毫秒內給予響應,不拋出異常,運行成功,方法2在2000毫秒內沒有得到響應,拋出異常,運行失敗。
超時測試使用場景,例:在測試過程中某一段時間后無反應,想跳過,則可以使用超時測試。
以上就是本次分享的TestNG比較常用的一些知識,希望對大家有幫助~~
歡迎添加我們的搜狗測試微信號,與我們一起聊聊測試。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的gtest测试框架使用详解_测试框架TestNG使用介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL5.7多源复制的实验
- 下一篇: 工厂方法模式_1天1个设计模式——工厂方