1、常用注释:
注解 | 描述 |
---|---|
@BeforeSuite |
在该套件的所有测试都运行在注释的方法之前,仅运行一次。 |
@AfterSuite |
在该套件的所有测试都运行在注释方法之后,仅运行一次。 |
@BeforeClass |
在调用当前类的第一个测试方法之前运行,注释方法仅运行一次。 |
@AfterClass |
在调用当前类的第一个测试方法之后运行,注释方法仅运行一次 |
@BeforeTest |
注释的方法将在属于<test> 标签内的类的所有测试方法运行之前运行。 |
@AfterTest |
注释的方法将在属于<test> 标签内的类的所有测试方法运行之后运行。 |
@BeforeGroups |
配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行。 |
@AfterGroups |
此配置方法将在之后运行组列表。该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行。 |
@BeforeMethod |
注释方法将在每个测试方法之前运行。 |
@AfterMethod |
注释方法将在每个测试方法之后运行。 |
@DataProvider |
标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object [] [] ,其中每个Object [] 可以被分配给测试方法的参数列表。 要从该DataProvider 接收数据的@Test 方法需要使用与此注释名称相等的dataProvider 名称。 |
@Factory |
将一个方法标记为工厂,返回TestNG 将被用作测试类的对象。 该方法必须返回Object [] 。 |
@Listeners |
定义测试类上的侦听器。 |
@Parameters |
描述如何将参数传递给@Test 方法。 |
@Test |
将类或方法标记为测试的一部分。 |
2、设置测试方法的执行顺序
在执行同一个类里面的测试方法时,我们有时候需要对各个test排序,这时我们加入参数priority=int即可,如下代码所示, ff()会在f()前执行
@Test(priority=2) public void f() { Assert.assertEquals("a", "a"); } @Test(priority=1) public void ff(){ Assert.assertEquals(1, 1); }
3、依赖测试
当大家顺序执行测试的时候,无非就是因为业务是有流程的,我们希望整一个业务流可以顺序地执行下去,那么还有一个比priority更好的参数:dependOnMethods 或者dependsOnGroups,两个参数顾名思义就是依赖方法或测试组。如下代码所以m2()要依赖m1,这时如果m1()执行失败,那么m2的测试是会跳过的。dependsOnGroups同理
@Test public void m1() { System.out.println("方法m1"); } @Test(dependsOnMethods="m1") public void m2(){ System.out.println("方法m2"); }
4、赋参
传递参数给@Test可以用@parameters和@DataProvider,个人偏爱@DataProvider,使用方法如下:
@Test(dataProvider="users") public void p1(String username,String password){ System.out.println("用户名:"+username); System.out.println("密码:"+password); } @DataProvider(name="users") public Object[][] myUsers(){ Object[][] users = new Object[][]{ {"user1","password1"}, {"user2","password2"} }; return users; }
5、忽略测试
在平时,有时候我们未调试好的测试方法,我们并不想让它执行,那么可以使用参数“enabled=false”忽略这个方法,如下所示ff()方法会被忽略
@Test(priority=2) public void f() { Assert.assertEquals("a", "a"); } @Test(priority=1,enabled=false) public void ff(){ Assert.assertEquals(1, 1); }