(四) TestNG 组(Group)

TestNG不仅允许我们把很多个方法归属到一个组下,还允许我们把组包含到另一个组内,我们可以灵活的决定说在我们的测试中使用哪些组的方法来测试。在第一篇文章中,我们也简单的介绍过TestNG组。我对TestNG组的理解,其实就是给方法或组贴标签,具有相同标签的就是一个组的,标签可以有多个,所以一个方法会或组可能同时属于多个组。

在代码内我们可以这样声明一个方法属于某个组:

  @Test(groups = { "group1" })
  public void testMethod() {
  }

在xml文件中,则有更加丰富的机制。在xml文件中我们用组<groups>来标签来声明要运行的组,这个声明既可以直接放在套件Suite下,也可以放在用例Test内。但是要注意的是,在suite声明的groups对suite下的全部Test都会起作用,在Test内声明的groups则仅作用在这个Test内。

下面是一个例子,我们可以观察下直接声明在suite的groups和声明在了test内的groups的运行情况。

import org.testng.annotations.Test;

public class TestGroupsScope {
	//将会在suite内声明,因此所有Test都会运行这个组
	@Test(groups = {"group1"})
	public void methodGroup1(){	}
	
	//将会在Test1内声明,因此仅Test1运行了这个组
	@Test(groups = {"group2"})
	public void methodGroup2(){	}
	
	//将会在Test2内声明,因此仅Test2运行了这个组
	@Test(groups = {"group3"})
	public void methodGroup3(){	}
	
	//由于没有被列入需要被运行的组而不会运行
	@Test(groups = {"group4"})
	public void methodGroup4(){	}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="testSuite">
	<groups>
	    <run>
	      <include name="group1"/>
	    </run>
	</groups>
	
	<test name="test1">
	  <groups>
	    <run>
	      <include name="group2"/>
	    </run>
	  </groups>
	  <classes>
	    <class name="com.testng.TestGroupsScope"/>
	  </classes>
	</test>
	
	<test name="test2">
	  <groups>
	    <run>
	      <include name="group3"/>
	    </run>
	  </groups>
	  <classes>
	    <class name="com.testng.TestGroupsScope"/>
	  </classes>
	</test>
</suite>

从运行的结果可以看到,由于我在suite内说明需要运行group1因此在Test1和Test2内都运行了group1的Method,group2和group3的Method则只在各种声明的Test内运行,由于group4没有任何地方说需要运行它,因此它并没有运行。(组的exclude和include就像取补,include就是取某个集合,不管是exclude还是include,最后运行的内容都是全集和exclude include后的交集。)

注:如果我们仅是希望说暂时不跑某个方法,也不用这么麻烦来指定组然后exclude,而是可以直接在方法上将其enabled属性置为false。

最后提一下,组是可以包含其他组的,具体的语法如下:

下面的组all包含了functest组和checkintest组

<test name="Regression1">
  <groups>
    <define name="all">
      <include name="functest"/>
      <include name="checkintest"/>
    </define>
  
    <run>
      <include name="all"/>
    </run>
  </groups>
  
  <classes>
    <class name="test.sample.Test1"/>
  </classes>
</test>


附上这部分的官方文档,你想要的都在这里!

https://testng.org/doc/documentation-main.html#test-groups

扫描二维码关注公众号,回复: 1913910 查看本文章



猜你喜欢

转载自blog.csdn.net/libertine1993/article/details/80733005