在执行测试用例的时候,往往一个功能依赖多个测试用例,比如流程的测试,那么这个时候就可以用到组测试,把流程涉及到测试用例都分到同一组里,按组执行即可。
testNG的组通过@Test的groups属性来指定的,一个方法可以属于一个组(@Test(groups = {"checkintest"})),也可以属于多个组(@Test(groups = {"functest","checkintest"}))。
定义common.java 包含 functest和checkintest分组
package com.lc.testngFenZu; import org.testng.annotations.Test; public class common { @Test(groups = {"functest","checkintest"}) public void login() { System.out.println("common测试类的login方法"); } @Test(groups = {"functest","checkinitest"}) public void quit() { System.out.println("common测试类的quit方法"); } @Test(groups = {"checkinitest"}) public void init() { System.out.println("common测试类的init方法"); } }
functionA.java测试类包含 functest 和 function2 分组
package com.lc.testngFenZu; import org.testng.annotations.Test; public class functionA { @Test(groups = {"functest"}) public void testMethod1() { System.out.println("我是functionA测试类的testMethod1方法"); } @Test(groups = {"function2"}) public void testMethod2() { System.out.println("我是functionA测试类的testMethod2方法"); } }
functionB.java 测试类 包含 functest 和 functest2 分组
package com.lc.testngFenZu; import org.testng.annotations.Test; public class functionB { @Test(groups = {"functest"}) public void testMethod3() { System.out.println("我是functionB测试类的testMethod3方法"); } @Test(groups = {"functest2"}) public void testMethod4() { System.out.println("我是functionB测试类的testMethod4方法"); } }
定义了三个测试类,分成三个分组
创建测试testng.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite" parallel="none"> <test name="Test" preserve-order="1"> <groups> <run> <include name="functest"/> <!-- 执行测试分组名字为 functest --> </run> </groups>
<!--从下面测试类里找到名为 functest 分组方法 --> <classes> <class name="com.lc.testngFenZu.common"></class> <class name="com.lc.testngFenZu.functionA"></class> <class name="com.lc.testngFenZu.functionB"></class> </classes> </test> <!-- Test --> </suite> <!-- Suite -->
折行结果
如何控制组里方法执行的顺序呢?可以通过@Test的priority属性,testNG按照priority从小到大的顺序执行。
还是上面三个测试类,加上 priority 属性
执行结果