一、 把测试方法分优先级执行-----》(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基础开始。

欢迎关注,转载请注明来源。

posted on 2019-08-27 17:26  时光以北暮南城  阅读(461)  评论(0编辑  收藏  举报