zoukankan      html  css  js  c++  java
  • 章节十六、4-TestNG高级功能--Part1

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

    运行结果为:

    如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴相互一起学习。

    内容具有连惯性,未标注的地方可以看前面的博客,这是一整套关于ava+selenium自动化的内容,从java基础开始。

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

  • 相关阅读:
    MySQL与OLAP:分析型SQL查询最佳实践探索
    创建与删除索引
    第三方推送-个推使用
    test
    图床_搭建本地yum仓库及自制rpm包(无需镜像)
    图床_有趣的linux命令行工具-lolcat
    图床_fdisk一键操作分区-无需脚本
    图床_将你的CentOS 7 配置yum源
    图床_使用Putty远程连接管理Linux实践
    图床_使用Xshell远程连接管理Linux实践
  • 原文地址:https://www.cnblogs.com/luohuasheng/p/11390270.html
Copyright © 2011-2022 走看看