一、 把测试方法分优先级执行-----》(priority=索引)
1、新建一个testng方法
1 package testclasses; 2 3 import org.testng.annotations.Test; 4 import org.testng.annotations.BeforeMethod; 5 import org.testng.annotations.AfterMethod; 6 import org.testng.annotations.BeforeClass; 7 import org.testng.annotations.AfterClass; 8 import org.testng.annotations.BeforeTest; 9 import org.testng.annotations.AfterTest; 10 11 public class TestNG_Prioritiy { 12 13 @Test 14 public void test1() { 15 System.out.println("在类中排序为第一的test"); 16 } 17 18 @Test 19 public void test2() { 20 System.out.println("在类中排序为第二的test"); 21 } 22 23 @Test 24 public void test3() { 25 System.out.println("在类中排序为第三的test"); 26 } 27 28 @Test 29 public void test4() { 30 System.out.println("在类中排序为第四的test"); 31 } 32 33 @BeforeClass 34 public void beforeClass() { 35 System.out.println("BeforeClass"); 36 } 37 38 @AfterClass 39 public void afterClass() { 40 System.out.println("AfterClass"); 41 } 42 }
默认的运行顺序为:
3、如果我们需要让test按照我们规定的方法,只需要在备注的test后面加上(priority=?)即可(索引位从0开始)
1 package testclasses; 2 3 import org.testng.annotations.Test; 4 import org.testng.annotations.BeforeMethod; 5 import org.testng.annotations.AfterMethod; 6 import org.testng.annotations.BeforeClass; 7 import org.testng.annotations.AfterClass; 8 import org.testng.annotations.BeforeTest; 9 import org.testng.annotations.AfterTest; 10 11 public class TestNG_Prioritiy { 12 13 @Test(priority=3) 14 public void test1() { 15 System.out.println("在类中排序为第一的test"); 16 } 17 18 @Test(priority=0) 19 public void test2() { 20 System.out.println("在类中排序为第二的test"); 21 } 22 23 @Test(priority=1) 24 public void test3() { 25 System.out.println("在类中排序为第三的test"); 26 } 27 28 @Test(priority=2) 29 public void test4() { 30 System.out.println("在类中排序为第四的test"); 31 } 32 33 @BeforeClass 34 public void beforeClass() { 35 System.out.println("BeforeClass"); 36 } 37 38 @AfterClass 39 public void afterClass() { 40 System.out.println("AfterClass"); 41 } 42 }
打印结果为:
二、 如何给测试方法分组执行 -----》(groups= {"分组名"})
1、给test方法进行分组
一个test方法可以在多个分组内,格式(groups= {"分组名","分组名"})
1 package testclasses; 2 3 import org.testng.annotations.Test; 4 import org.testng.annotations.BeforeClass; 5 import org.testng.annotations.AfterClass; 6 7 public class TestNG_Grouping { 8 9 @Test(groups= {"cars","suv"}) 10 public void testBMWx6() { 11 System.out.println("Running Test - BMW X6"); 12 } 13 14 @Test(groups= {"cars","sedan"}) 15 public void testAudiA6() { 16 System.out.println("Running Test - Audi A6"); 17 } 18 19 @Test(groups= {"bike"}) 20 public void testKawasakiNinja() { 21 System.out.println("Running Test - Kawasaki Ninja"); 22 } 23 24 @Test(groups= {"bike"}) 25 public void testHondaCBR() { 26 System.out.println("Running Test - Honda CBR"); 27 } 28 29 @BeforeClass 30 public void beforeClass() { 31 System.out.println("BeforeClass"); 32 } 33 34 @AfterClass 35 public void afterClass() { 36 System.out.println("AfterClass"); 37 } 38 }
2、配置xml文件
1 <!-- 没有此行配置运行时会报错 --> 2 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 3 <suite name="GroupsDemo"> 4 <!-- name中的值表示命名,可随意命名 --> 5 <test name="Application Test"> 6 <!-- 使测试用例按照我们的分组执行 --> 7 <groups> 8 <run> 9 <!-- name中的赋值需要填写的是我们在类中对test分组的名称 --> 10 <include name="bike"></include> 11 </run> 12 </groups> 13 <!-- name中的值为需要测试的具体类名,格式:包名.类名 --> 14 <classes> 15 <class name="testclasses.TestNG_Grouping"></class> 16 </classes> 17 </test> 18 </suite>
运行结果:
从结果可知,只运行了TestNG_Grouping类中带注解groups=bike的test方法
3、但是,我们也可以从运行结果中得知,带了Beforeclass和afterclass注解的方法没有运行,按常理Beforeclass和afterclass会在类中的test方法执行前后给运行一次,此处没有运行时因为我们对test进行分组时未对class进行分组,如果我想让Beforeclass和afterclass注解的方法一起运行就需要在注解后面加上(alwaysRun=true)
运行结果为:
4、在xml配置文件中,我们不仅可以如上面1、2中演示的那样把test在xml文件中按照groups的名称来单独执行,也可以对groups再进行分组然后一次性执行多个groups。
1 <!-- 没有此行配置运行时会报错 --> 2 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 3 <suite name="GroupsDemo"> 4 <!-- name中的值表示命名,可随意命名 --> 5 <test name="Application Test"> 6 <!-- 使测试用例按照我们的分组执行 --> 7 <groups> 8 <define name="all"> 9 <include name="suv"></include> 10 <include name="bike"></include> 11 <include name="sedan"></include> 12 </define> 13 <define name="nobike"> 14 <include name="suv"></include> 15 <include name="sedan"></include> 16 </define> 17 <run> 18 <!-- name中的赋值需要填写的是我们在类中对test分组的名称或者是xml文件中define标签的name名称 --> 19 <include name="nobike"></include> 20 </run> 21 </groups> 22 <!-- name中的值为需要测试的具体类名,格式:包名.类名 --> 23 <classes> 24 <class name="testclasses.TestNG_Grouping"></class> 25 </classes> 26 </test> 27 </suite>
运行结果为:
如果有不明白的小伙伴可以私信问我,目前也建了qq、微信群,都是软件行业的小伙伴相互一起学习。
内容具有连惯性,未标注的地方可以看前面的博客,这是一整套关于ava+selenium自动化的内容,从java基础开始。
欢迎关注,转载请注明来源。