TestNG中组groups概念以及用法

来源:互联网 发布:地牢猎手5怎么清除数据 编辑:程序博客网 时间:2024/05/22 00:08

在TestNG中,组groups的概念主要是相对于测试方法而言的。即,将具有相似功能的测试方法分组,这样在定义测试用例的时候就可以以组为单位加入对应的测试方法。

总体来讲,组的定义可以有两种途径:一种是在测试类中定义组groups;另一种是在testng.xml配置文件中,将测试类中定义的组groups进行组合,以得到新的组groups。归根结蒂,是在测试类中定义组的。

1. 在测试类中定义组groups

可以说,TestNG中的组都是在测试类中定义的。这些在测试类中定义的组,要么在testng.xml配置文件中被直接使用,要么在testng.xml配置文件中被组合使用。

在测试类中定义组groups的方式有两种:一种是定义测试方法组,另一种是定义测试类组。

1).测试方法组

测试方法组是指在测试类中,定义测试方法的同时,为其指定所属的组。示例如下:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public class Test1 {  
  2.   @Test(groups = { "functest""checkintest" })  
  3.   public void testMethod1() {  
  4.   }  
  5.    
  6.   @Test(groups = {"window.checkintest"} )  
  7.   public void testMethod2() {  
  8.   }  
  9.    
  10.   @Test(groups = { "functest" })  
  11.   public void testMethod3() {  
  12.   }  
  13. }  
从上述示例可知,组groups的命名是多样的。一个测试方法可以属于组,也可以属于多个组。

2).测试类组

测试类组指在测试类中,为整个类的测试方法指定统一的组,当然各个测试方法还可以再指定所属的其他组。即一个测试方法可能同时属于多个组。示例如下:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. @Test(groups = { "checkin-test" })  
  2. public class All {  
  3.    
  4.   @Test(groups = { "func-test" )  
  5.   public void method1() { ... }  
  6.    
  7.   public void method2() { ... }  
  8. }  

从上述示例可知,在测试类All中的所有测试方法都属于checkin-test组。另外,测试方法method1还属于func-test组。


2. 在testng.xml配置文件中对组groups进行组合(即定义包含组的组,亦即嵌套组)

1). 通过<groups>

这是一种直观的方式。

通过前面的文章我们已经知道,在testng.xml配置文件中,可以有两种方式使用组groups,一种是定义<suite>全局的组groups,另一种是定义属于某个<test>的组groups。但无论哪种使用方式,都是对测试类中已有的组groups的重新组合。示例如下:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <test name="Regression1">  
  2.   <groups>  
  3.     <define name="functest">  
  4.       <include name="windows"/>  
  5.       <include name="linux"/>  
  6.     </define>  
  7.     
  8.     <define name="all">  
  9.       <include name="functest"/>  
  10.       <include name="checkintest"/>  
  11.     </define>  
  12.     
  13.     <run>  
  14.       <include name="all"/>  
  15.     </run>  
  16.   </groups>  
  17.     
  18.   <classes>  
  19.     <class name="test.sample.Test1"/>  
  20.   </classes>  
  21. </test>  
这是一个测试用例中组合使用组groups的例子。在测试类test.sample.Test1中已经定义了多个组groups,但是在该测试用例中还希望对其进行组合,以得到想要的测试方法。

2). 通过<classes>

这是一种灵活的方式,直接对测试方法进行分组。示例如下:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. <test name="Test1">  
  2.   <classes>  
  3.     <class name="example1.Test1">  
  4.       <methods>  
  5.         <include name=".*enabledTestMethod.*"/>  
  6.         <exclude name=".*brokenTestMethod.*"/>  
  7.       </methods>  
  8.      </class>  
  9.   </classes>  
  10. </test>  
注意这里的通配符“.*”,根据测试方法的命名将测试方法进行分组。
0 0
原创粉丝点击