(四) 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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章