乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      TestNG 入門教程

       小豬窩969 2015-08-28

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


      我前段時間加班太多了,每天忙碌工作,都沒精力去管自己的學習新技能的計劃, 博客也沒寫幾篇,很多想做的事情都因為工作太忙而耽擱了。 所以工作太忙了也不好,沒有精力關(guān)注工作以外的事情。   


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


       


      閱讀目錄



      1. TestNG介紹

      2. 在Eclipse 中安裝TestNG插件

      3. TestNG最簡單的測試

      4. TestNG的基本注解

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

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

      7. TestNG異常測試

      8. TestNG組測試

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

      10. TestNG忽略測試

      11. TestNG 依賴測試

      12. TestNG測試報告


       


      TestNG介紹


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


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


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


       


      在Eclipse中安裝TestNG


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



       


      TestNG最簡單的測試


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


      復制代碼

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

      復制代碼

       


      TestNG的基本注解


       


































































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

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

       


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


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



       


       


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


      testng.xml


      復制代碼

      <?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>

      復制代碼


       


      TestNG按順序執(zhí)行Case


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


      復制代碼

      <?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>

      復制代碼

       


       


       


      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中可以把測試用例分組,這樣可以按組來執(zhí)行測試用例比如:


      復制代碼

      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中 按組執(zhí)行測試用例


      復制代碼

      <?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>

      復制代碼

       


      TestNG參數(shù)化測試


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


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


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


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


       


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


      復制代碼

      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-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傳遞參數(shù)


      復制代碼

      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 依賴測試


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


      復制代碼

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

      復制代碼

       


      TestNG測試結(jié)果報告


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


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



       


      當然我們也可以設(shè)置測試報告的內(nèi)容級別. 


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


      復制代碼

      <?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>

      復制代碼

       


       


       

      如果您看了本篇博客,覺得對您有所收獲,請點擊右下角的 [推薦]

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

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

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

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多