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