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
===============================================
原文地址:https://www.cnblogs.com/daydayup-lin/p/14966701.html