APP接口自動化測試JAVA+TestNG(二)之TestNG簡介與基礎實例

前言html

       繼上篇環境篇後,本篇主要對TestNG進行介紹,給出最最基礎的兩個實例,經過本文後,學會並掌握TestNG測試用例的編寫與運行,以及生成美化後的報告。下一篇爲HTTP接口實戰(國家氣象局接口自動化測試)前端

 

2.2.2.1 新建JAVA工程
2.2.2.2 引入Lib庫
2.2.2.3 檢查testng報告配置
2.2.2.4 編寫測試用例

2.2.2.5 執行用例編程

2.2.3 基礎實例2
2.2.3.1編寫測試用例
2.2.3.2執行用例

 

  

因原來沒有保留相關內容,如下實例均爲本次總結再次編寫,,如轉載還請保留出處與做者姓名Findyou,謝謝! 瀏覽器

 

2.1  TestNG與JUnit對比

爲了文章的完整性,從網絡摘抄部分文字介紹相關內容。網絡

官網: http://testng.org/doc/index.html多線程

不錯的入門介紹: http://www.yiibai.com/testng/框架

 

2.1.1 JUnit缺點

  • 最初的設計,使用於單元測試,如今只用於各類測試
  • 不能依賴測試
  • 配置控制欠佳(安裝/拆卸)
  • 侵入性(強制擴展類,並以某種方式命名方法)
  • 靜態編程模型(沒必要要的從新編譯)
  • 不一樣的適合管理複雜項目中的測試能夠是很是棘手

 

2.1.2 TestNG是什麼?

TestNG按照其文檔的定義是:
eclipse

  • TestNG是一個測試框架,其靈感來自JUnit和NUnit的,但引入了一些新的功能,使其功能更強大,使用更方便。
  • TestNG是一個開源自動化測試框架;TestNG表示下一代。 TestNG是相似於JUnit(特別是JUnit 4),但它不是一個JUnit擴展。它的靈感來源於JUnit。它的目的是優於JUnit的,尤爲是當測試集成的類。 TestNG的創造者是Cedric Beust(塞德里克•博伊斯特)
  • TestNG消除了大部分的舊框架的限制,使開發人員可以編寫更加靈活和強大的測試。 由於它在很大程度上借鑑了Java註解(JDK5.0引入的)來定義的測試,它也能夠告訴你如何使用這個新功能在真實的Java語言生產環境中。

 

2.1.3TestNG的特色

  • 註解
  • TestNG使用Java和麪向對象的功能
  • 支持綜合類測試(例如,默認狀況下,沒有必要建立一個新的測試每一個測試方法的類的實例)
  • 獨立的編譯時間測試代碼運行時配置/數據信息
  • 靈活的運行時配置
  • 主要介紹「測試組」。當編譯測試,只要問TestNG運行全部的「前端」的測試,或「快」,「慢」,「數據庫」等
  • 支持依賴測試方法,並行測試,負載測試,局部故障
  • 靈活的插件API
  • 支持多線程測試 

 

2.2  TestNG註解與基礎實例

2.2.1 註解

註解 yii

描述

@BeforeSuite

註解的方法將只運行一次,運行全部測試前此套件中。

@AfterSuite

註解的方法將只運行一次此套件中的全部測試都運行以後。

@BeforeClass

註解的方法將只運行一次先行先試在當前類中的方法調用。

@AfterClass

註解的方法將只運行一次後已經運行在當前類中的全部測試方法。

@BeforeTest

註解的方法將被運行以前的任何測試方法屬於內部類的 <test>標籤的運行。

@AfterTest

註解的方法將被運行後,全部的測試方法,屬於內部類的<test>標籤的運行。

@BeforeGroups

按組( @Test(groups= "findyou") )運行時,此註解在組(findyou組)執行以前運行,可作組(findyou組)執行以前,初始化數據準備類工做。

@AfterGroups

按組( @Test(groups= "findyou") )運行時,此註解在組(findyou組)執行以後運行,可作組(findyou)執行以後,數據還原類工做。

@BeforeMethod

註解的方法將每一個測試方法以前運行。

@AfterMethod

被註釋的方法將被運行後,每一個測試方法。

@DataProvider

標誌着一個方法,提供數據的一個測試方法。註解的方法必須返回一個Object[] [],其中每一個對象[]的測試方法的參數列表中能夠分配。

@Test 方法,但願從這個DataProvider的接收數據,須要使用一個dataProvider名稱等於這個註解的名字。

@Factory

做爲一個工廠,返回TestNG的測試類的對象將被用於標記的方法。該方法必須返回Object[]

@Listeners

定義一個測試類的監聽器。

@Parameters

介紹如何將參數傳遞給@Test方法。

@Test

標記一個類或方法做爲測試的一部分。

 

2.2.2  基礎實例1

     2.2.2.1  新建JAVA工程

新建: NEW --> JAVA Project --> 輸入工程名稱  --> Finish
詳請Google OR 百度

  

     2.2.2.2  引入Lib庫 

 


     2.2.2.3檢查testng報告配置

  

     2.2.2.4 編寫測試用例

package  findyou.testcase;  

import org.testng.annotations.Test;
public class TestCaseStudy {
    // test case 1
    @Test
    public void testCase1() {
        System.out.println("in test case 1");
    }
} 

 

 

 

 

     2.2.2.5 執行用例

執行:右擊JAVA文件,Run as -- > TestNG Test

  • 執行結果: 

  

  • 測試報告: 

 

  • 瀏覽器查看: 

概要


詳細

  

2.2.3 基礎實例2

     2.2.3.1 編寫測試用例

import  org.testng.annotations.AfterClass;

import org.testng.annotations.AfterSuite;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;

public class TestngStudy {
    // test case 1
        @Test
        public void testCase1() {
            System.out.println("This is a test case 1");
        }

        // test case 2
        @Test
        public void testCase2() {
            System.out.println("This is a test case 2");
        }

        @BeforeMethod
        public void beforeMethod() {
            System.out.println("This is beforeMethod");
        }

        @AfterMethod
        public void afterMethod() {
            System.out.println("This is afterMethod");
        }

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

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

        @BeforeTest
        public void beforeTest() {
            System.out.println("This is beforeTest");
        }

        @AfterTest
        public void afterTest() {
            System.out.println("This is afterTest");
        }

        @BeforeSuite
        public void beforeSuite() {
            System.out.println("This is beforeSuite");
        }

        @AfterSuite
        public void afterSuite() {
            System.out.println("This is afterSuite");
        }
} 

     2.2.3.2 執行用例 

 [TestNG] Running:

  C:\Users\Albert\AppData\Local\Temp\testng-eclipse--65898469\testng-customsuite.xml

This is beforeSuite

This is beforeTest

This is beforeClass

This is beforeMethod

This is a test case 1

This is afterMethod

This is beforeMethod

This is a test case 2

This is afterMethod

This is afterClass

This is afterTest

PASSED: testCase1

PASSED: testCase2 

===============================================

    Default test

    Tests run: 2, Failures: 0, Skips: 0

=============================================== 

This is afterSuite 

===============================================

Default suite

Total tests run: 2, Failures: 0, Skips: 0

=============================================== 

[TestNG] Time taken by org.uncommons.reportng.HTMLReporter@5f8ed237: 217 ms

 

 

以上TestNG學習基本瞭解完畢,下一篇將經過對國家氣象局提供的天氣接口的測試,來說解HTTP接口的自動化測試,與結果斷言。 

 

原創,如轉載還請保留出處與做者姓名Findyou,謝謝!

相關文章
相關標籤/搜索