Java接口自動化——Before/After注解、Parameters注解和DataProvider注解


上一篇里面提到了Test注解,本篇簡單介紹下Before/After注解、Parameters注解和DataProvider注解。

Before/After注解

注解內容描述如下:

@BeforeSuite:帶有該注釋的方法將在該套件中的所有測試運行之前運行。
@AfterSuite:帶有該注釋的方法將在該套件中的所有測試運行之后運行。
@BeforeTest:帶有該注釋的方法將在運行屬於標記內的類的任何測試方法之前運行。
@AfterTest:帶有該注釋的方法將在運行屬於標記內的類的任何測試方法之后運行。
@BeforeClass:帶有該注釋的方法將在調用當前類的第一個測試方法之前運行。
@AfterClass:帶有該注釋的方法將再當前類中的所以測試方法運行之后運行。
@BeforeMethod:帶有該注釋的方法將在當前類中的每個測試方法之前運行。
@AfterMethod:帶有該注釋的方法將在當前類中的每個測試方法之后運行。

舉例:

package com.forest.testng;

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

public class Demo3 {
    
    @BeforeSuite
    public void f1() {
        System.out.println("before suite");
    }
    
    @AfterSuite
    public void f2() {
        System.out.println("after suite");
    }
    
    @BeforeTest
    public void f3() {
        System.out.println("before test");
    }
    
    @AfterTest
    public void f4() {
        System.out.println("after test");
    }
    
    @BeforeClass
    public void f5() {
        System.out.println("before class");
    }
    
    @AfterClass
    public void f6() {
        System.out.println("after class");
    }
    
    @BeforeMethod
    public void f7() {
        System.out.println("before method");
    }
    
    @AfterMethod
    public void f8() {
        System.out.println("after method");
    }
    
    @Test
    public void test1() {
        System.out.println("Demo3...test1...");
    }
    
    @Test
    public void test2() {
        System.out.println("Demo3...test2...");
    }
}

運行結果如圖:

Parameters注解

可以用作參數傳遞。

舉例:

編寫class文件demo如下:

package com.forest.testng;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class Demo {
      
      @Test
      @Parameters({"firstName","lastName"})
      public void test1(String fn,String ln) {
            System.out.println("Demo...test...");
            System.out.println(fn + "," + ln);
      }
}

上述文件單獨運行肯定會報錯。下面我們在testng.xml文件中如下編寫:

<?xml version="1.0" encoding="UTF-8"?>
<suite name="測試項目" parallel="false">
  <test name="測試模塊">
    <classes>
      <class name="com.forest.testng.Demo5" /> </classes> </test> <parameter name="firstName" value="小燕子" /> <parameter name="lastName" value="永琪" /> </suite>

選中testng.xml文件,右鍵選擇Run As-->TestNG Suite即可運行查看結果。

 

DataProvider注解

DataProvider注解傳遞參數更為靈活。示例如下:

package com.forest.testng;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class Demo {
      
      @Test(dataProvider = "datas")  //引用名稱叫“datas”的數據
      public void test1(String fn,String ln) {
            System.out.println(fn + "." + ln);
      }
      
      @DataProvider(name="datas")  //給數組命名成datas
      public Object[][] datas() {
            Object[][] datas = {
                        {"七仙女","董永"},
                        {"織女","牛郎"}
            };
            return datas;
      }
}

運行結果為:

七仙女,董永
織女,牛郎
PASSED: test1("七仙女", "董永")
PASSED: test1("織女", "牛郎")
===============================================
    Default test
    Tests run: 2, Failures: 0, Skips: 0
===============================================

===============================================
Default suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM