久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

TestNG 入門教程

 小豬窩969 2015-08-28

國(guó)慶7天假期,,大部分朋友都出去旅游了,,微信圈里全是曬旅游的照片, 東南亞游,,歐洲游呀,,真是羨慕呀。 悲慘的我只去了上海野生動(dòng)物園,, 在家休息,,利用這段假期,把之前學(xué)過的東西都總結(jié)下,。 


我前段時(shí)間加班太多了,,每天忙碌工作,都沒精力去管自己的學(xué)習(xí)新技能的計(jì)劃, 博客也沒寫幾篇,,很多想做的事情都因?yàn)楣ぷ魈ΧR了,。 所以工作太忙了也不好,沒有精力關(guān)注工作以外的事情,。   


最近寫自動(dòng)化測(cè)試每天都用到TestNG,  把常用的TestNG的用法總結(jié)下。


 


閱讀目錄



  1. TestNG介紹

  2. 在Eclipse 中安裝TestNG插件

  3. TestNG最簡(jiǎn)單的測(cè)試

  4. TestNG的基本注解

  5. TestNG中如何執(zhí)行測(cè)試

  6. TestNG中按順序執(zhí)行Case

  7. TestNG異常測(cè)試

  8. TestNG組測(cè)試

  9. TestNG參數(shù)化測(cè)試

  10. TestNG忽略測(cè)試

  11. TestNG 依賴測(cè)試

  12. TestNG測(cè)試報(bào)告


 


TestNG介紹


TestNG是Java中的一個(gè)測(cè)試框架,, 類似于JUnit 和NUnit,   功能都差不多,, 只是功能更加強(qiáng)大,使用也更方便


Java中已經(jīng)有一個(gè)JUnit的測(cè)試框架了,。  TestNG比JUnit功能強(qiáng)大的多,。  測(cè)試人員一般用TestNG來寫自動(dòng)化測(cè)試。  開發(fā)人員一般用JUnit寫單元測(cè)試,。


官方網(wǎng)站: http:///doc/index.html


 


在Eclipse中安裝TestNG


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



 


TestNG最簡(jiǎn)單的測(cè)試


 下面是TestNG的最簡(jiǎn)單的一個(gè)例子


復(fù)制代碼

package TankLearn2.Learn;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.testng.annotations.Test;

public class TestNGLearn1 {

    @BeforeClass
    public void beforeClass() {
        System.out.println("this is before class");
    }

    @Test
    public void TestNgLearn() {
        System.out.println("this is TestNG test case");
    }

    @AfterClass
    public void afterClass() {
        System.out.println("this is after class");
    }
}

復(fù)制代碼

 


TestNG的基本注解


 


































































注解描述
@BeforeSuite注解的方法將只運(yùn)行一次,,運(yùn)行所有測(cè)試前此套件中,。
@AfterSuite注解的方法將只運(yùn)行一次此套件中的所有測(cè)試都運(yùn)行之后。
@BeforeClass注解的方法將只運(yùn)行一次先行先試在當(dāng)前類中的方法調(diào)用,。
@AfterClass注解的方法將只運(yùn)行一次后已經(jīng)運(yùn)行在當(dāng)前類中的所有測(cè)試方法,。
@BeforeTest注解的方法將被運(yùn)行之前的任何測(cè)試方法屬于內(nèi)部類的 <test>標(biāo)簽的運(yùn)行。
@AfterTest注解的方法將被運(yùn)行后,,所有的測(cè)試方法,,屬于內(nèi)部類的<test>標(biāo)簽的運(yùn)行。
@BeforeGroups組的列表,,這種配置方法將之前運(yùn)行,。此方法是保證在運(yùn)行屬于任何這些組第一個(gè)測(cè)試方法,該方法被調(diào)用,。
@AfterGroups組的名單,,這種配置方法后,將運(yùn)行,。此方法是保證運(yùn)行后不久,,最后的測(cè)試方法,該方法屬于任何這些組被調(diào)用,。
@BeforeMethod注解的方法將每個(gè)測(cè)試方法之前運(yùn)行,。
@AfterMethod被注釋的方法將被運(yùn)行后,每個(gè)測(cè)試方法,。
@DataProvider
標(biāo)志著一個(gè)方法,,提供數(shù)據(jù)的一個(gè)測(cè)試方法。注解的方法必須返回一個(gè)Object[] [],,其中每個(gè)對(duì)象[]的測(cè)試方法的參數(shù)列表中可以分配,。

該@Test 方法,希望從這個(gè)DataProvider的接收數(shù)據(jù),,需要使用一個(gè)dataProvider名稱等于這個(gè)注解的名字,。
@Factory作為一個(gè)工廠,返回TestNG的測(cè)試類的對(duì)象將被用于標(biāo)記的方法,。該方法必須返回Object[],。
@Listeners定義一個(gè)測(cè)試類的監(jiān)聽器。
@Parameters介紹如何將參數(shù)傳遞給@Test方法,。
@Test標(biāo)記一個(gè)類或方法作為測(cè)試的一部分,。

 


TestNG中如何執(zhí)行測(cè)試


第一種直接執(zhí)行:右鍵要執(zhí)行的方法,  點(diǎn)Run As ->TestNG Test



 


 


第二種:  通過testng.xml文件來執(zhí)行. 把要執(zhí)行的case, 放入testng.xml文件中,。 右鍵點(diǎn)擊testng.xml,   點(diǎn)Run As


testng.xml


復(fù)制代碼

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

復(fù)制代碼


 


TestNG按順序執(zhí)行Case


在testng.xml中,,可以控制測(cè)試用例按順序執(zhí)行。  當(dāng)preserve-order="true"是,可以保證節(jié)點(diǎn)下面的方法是按順序執(zhí)行的


復(fù)制代碼

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http:///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>

復(fù)制代碼

 


 


 


TestNG異常測(cè)試


測(cè)試中,,有時(shí)候我們期望某些代碼拋出異常,。


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


復(fù)制代碼

package TankLearn2.Learn;

import org.testng.annotations.Test;

public class ExceptionTest {
    
    @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp="NullPoint")
    public void testException(){
        throw new IllegalArgumentException("NullPoint");
    }
}

復(fù)制代碼

 


TestNG組測(cè)試


TestNG中可以把測(cè)試用例分組,,這樣可以按組來執(zhí)行測(cè)試用例比如:


復(fù)制代碼

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");
    }
}

復(fù)制代碼

 


然后在testng.xml中 按組執(zhí)行測(cè)試用例


復(fù)制代碼

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

復(fù)制代碼

 


TestNG參數(shù)化測(cè)試


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


TestNG提供了2種傳遞參數(shù)的方式,。


第一種: testng.xml 方式使代碼和測(cè)試數(shù)據(jù)分離,,方便維護(hù)


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


 


方法一: 通過testng.xml 傳遞參數(shù)給測(cè)試代碼


復(fù)制代碼

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);
    }
}

復(fù)制代碼

testng.xml


復(fù)制代碼

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http:///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>

復(fù)制代碼

 


方式二:   通過DataProvider傳遞參數(shù)


復(fù)制代碼

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);
    }
}

復(fù)制代碼

 


TestNG忽略測(cè)試


有時(shí)候測(cè)試用例還沒準(zhǔn)備好,, 可以給測(cè)試用例加上@Test(enable = false),,  來禁用此測(cè)試用例


復(fù)制代碼

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");
    }
}

復(fù)制代碼

 


TestNG 依賴測(cè)試


有時(shí)候,我們需要按順序來調(diào)用測(cè)試用例,,  那么測(cè)試用例之間就存在依賴關(guān)系,。 TestNG支持測(cè)試用例之間的依賴


復(fù)制代碼

package TankLearn2.Learn;

import org.testng.annotations.Test;

public class DependsTest {
    
    @Test
    public void setupEnv(){
        System.out.println("this is setup Env");
    }
    
    @Test(dependsOnMethods = {"setupEnv"})
    public void testMessage(){
        System.out.println("this is test message");
    }
}

復(fù)制代碼

 


TestNG測(cè)試結(jié)果報(bào)告


測(cè)試報(bào)告是測(cè)試非常重要的部分.  


TestNG默認(rèn)情況下,會(huì)生產(chǎn)兩種類型的測(cè)試報(bào)告HTML的和XML的,。 測(cè)試報(bào)告位于 "test-output" 目錄下.



 


當(dāng)然我們也可以設(shè)置測(cè)試報(bào)告的內(nèi)容級(jí)別. 


verbose="2" 標(biāo)識(shí)的就是記錄的日志級(jí)別,,共有0-10的級(jí)別,其中0表示無,,10表示最詳細(xì)


復(fù)制代碼

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

復(fù)制代碼

 


 


 

如果您看了本篇博客,覺得對(duì)您有所收獲,,請(qǐng)點(diǎn)擊右下角的 [推薦]

如果您想轉(zhuǎn)載本博客,請(qǐng)注明出處

如果您對(duì)本文有意見或者建議,,歡迎留言

感謝您的閱讀,,請(qǐng)關(guān)注我的后續(xù)博客

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多