日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TestNG 自动化测试入门教程--典型示例

發布時間:2025/5/22 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TestNG 自动化测试入门教程--典型示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TestNG介紹

TestNG是Java中的一個測試框架, 類似于JUnit 和NUnit, ? 功能都差不多, 只是功能更加強大,使用也更方便

Java中已經有一個JUnit的測試框架了。 ?TestNG比JUnit功能強大的多。 ?測試人員一般用TestNG來寫自動化測試。 ?開發人員一般用JUnit寫單元測試。

官方網站:?http://testng.org/doc/index.html

?

在Eclipse中安裝TestNG

打開Eclipse ? Help ->Install New Software , ? 然后Add ? "http://beust.com/eclipse"

?

TestNG最簡單的測試

?下面是TestNG的最簡單的一個例子

package TankLearn2.Learn;import org.junit.AfterClass; import org.junit.BeforeClass; import org.testng.annotations.Test;public class TestNGLearn1 {@BeforeClasspublic void beforeClass() {System.out.println("this is before class");}@Testpublic void TestNgLearn() {System.out.println("this is TestNG test case");}@AfterClasspublic void afterClass() {System.out.println("this is after class");} }

?

TestNG的基本注解

?

注解描述
@BeforeSuite注解的方法將只運行一次,運行所有測試前此套件中。
@AfterSuite注解的方法將只運行一次此套件中的所有測試都運行之后。
@BeforeClass注解的方法將只運行一次先行先試在當前類中的方法調用。
@AfterClass注解的方法將只運行一次后已經運行在當前類中的所有測試方法。
@BeforeTest注解的方法將被運行之前的任何測試方法屬于內部類的?<test>標簽的運行。
@AfterTest注解的方法將被運行后,所有的測試方法,屬于內部類的<test>標簽的運行。
@BeforeGroups組的列表,這種配置方法將之前運行。此方法是保證在運行屬于任何這些組第一個測試方法,該方法被調用。
@AfterGroups組的名單,這種配置方法后,將運行。此方法是保證運行后不久,最后的測試方法,該方法屬于任何這些組被調用。
@BeforeMethod注解的方法將每個測試方法之前運行。
@AfterMethod被注釋的方法將被運行后,每個測試方法。
@DataProvider 標志著一個方法,提供數據的一個測試方法。注解的方法必須返回一個Object[] [],其中每個對象[]的測試方法的參數列表中可以分配。 該@Test?方法,希望從這個DataProvider的接收數據,需要使用一個dataProvider名稱等于這個注解的名字。
@Factory作為一個工廠,返回TestNG的測試類的對象將被用于標記的方法。該方法必須返回Object[]。
@Listeners定義一個測試類的監聽器。
@Parameters介紹如何將參數傳遞給@Test方法。
@Test標記一個類或方法作為測試的一部分。

?

TestNG中如何執行測試

第一種直接執行:右鍵要執行的方法,  點Run As ->TestNG Test

?

?

第二種: ?通過testng.xml文件來執行. 把要執行的case, 放入testng.xml文件中。 右鍵點擊testng.xml, ? 點Run As

testng.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Suite1"><test name="test12"><classes><class name="TankLearn2.Learn.TestNGLearn1" /></classes></test> </suite>

?

TestNG按順序執行Case

在testng.xml中,可以控制測試用例按順序執行。 ?當preserve-order="true"是,可以保證節點下面的方法是按順序執行的

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Suite1"><test name="test12" preserve-order="true"><classes><class name="TankLearn2.Learn.TestNGLearn1"><methods><include name="TestNgLearn3" /><include name="TestNgLearn1" /><include name="TestNgLearn2" /></methods></class></classes></test> </suite>

?

?

?

TestNG異常測試

測試中,有時候我們期望某些代碼拋出異常。

TestNG通過@Test(expectedExceptions) ?來判斷期待的異常, 并且判斷Error Message

package TankLearn2.Learn;import org.testng.annotations.Test;public class ExceptionTest {@Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp="NullPoint")public void testException(){throw new IllegalArgumentException("NullPoint");} }

?

TestNG組測試

TestNG中可以把測試用例分組,這樣可以按組來執行測試用例比如:

package TankLearn2.Learn;import org.testng.annotations.Test;public class GroupTest {@Test(groups = {"systemtest"})public void testLogin(){System.out.println("this is test login");}@Test(groups = {"functiontest"})public void testOpenPage(){System.out.println("this is test Open Page");} }

?

然后在testng.xml中 按組執行測試用例

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Suite1"><test name="test1"><groups><run><include name="functiontest" /></run></groups></test> </suite>

?

TestNG參數化測試

軟件測試中,經常需要測試大量的數據集。 測試代碼的邏輯完全一樣,只是測試的參數不一樣。 ?這樣我們就需要一種 “傳遞測試參數的機制”。 避免寫重復的測試代碼

TestNG提供了2種傳遞參數的方式。

第一種: testng.xml 方式使代碼和測試數據分離,方便維護

第二種:@DataProvider能夠提供比較復雜的參數。 (也叫data-driven testing)

?

方法一: 通過testng.xml 傳遞參數給測試代碼

package TankLearn2.Learn;import org.testng.annotations.Parameters; import org.testng.annotations.Test;public class ParameterizedTest1 {@Test@Parameters("test1")public void ParaTest(String test1){System.out.println("This is " + test1);} }

testng.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Suite1"><parameter name="test1" value="Tank" /><parameter name="test1" value="Xiao" /><test name="test12"><classes><class name="TankLearn2.Learn.ParameterizedTest1" /></classes></test> </suite>

?

方式二: ? 通過DataProvider傳遞參數

package TankLearn2.Learn;import org.testng.annotations.DataProvider; import org.testng.annotations.Test;public class DataProviderLearn {@DataProvider(name="user")public Object[][] Users(){return new Object[][]{{"root","passowrd"},{"cnblogs.com", "tankxiao"},{"tank","xiao"}};}@Test(dataProvider="user")public void verifyUser(String userName, String password){System.out.println("Username: "+ userName + " Password: "+ password);} }

?

TestNG忽略測試

有時候測試用例還沒準備好, 可以給測試用例加上@Test(enable = false), ?來禁用此測試用例

package TankLearn2.Learn;import org.testng.annotations.Test;public class TesgNGIgnore {@Test(enabled = false)public void testIgnore(){System.out.println("This test case will ignore");} }

?

TestNG 依賴測試

有時候,我們需要按順序來調用測試用例, ?那么測試用例之間就存在依賴關系。 TestNG支持測試用例之間的依賴

package TankLearn2.Learn;import org.testng.annotations.Test;public class DependsTest {@Testpublic void setupEnv(){System.out.println("this is setup Env");}@Test(dependsOnMethods = {"setupEnv"})public void testMessage(){System.out.println("this is test message");} }

?

TestNG測試結果報告

測試報告是測試非常重要的部分. ?

TestNG默認情況下,會生產兩種類型的測試報告HTML的和XML的。 測試報告位于 "test-output" 目錄下.

?

當然我們也可以設置測試報告的內容級別.?

verbose="2" 標識的就是記錄的日志級別,共有0-10的級別,其中0表示無,10表示最詳細

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Suite1"><test name="test12" verbose="2"><classes><class name="TankLearn2.Learn.TestNGLearn1" /></classes></test> </suite>

?

版權聲明:本文為小平果原創文章,轉載請注明:http://blog.csdn.net/i10630226

轉載于:https://www.cnblogs.com/dingxiaoyue/p/4948243.html

總結

以上是生活随笔為你收集整理的TestNG 自动化测试入门教程--典型示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。