有时候我们的测试用例并不想以测试包、类和用例为单位去运行。测试用例可以有多个纬度去标识。

例如,可以根据用例的重要程度划分:

  • 重要程度:低——>中——>高

或者,根据用例的类型划分:

  • 类型:正常——>异常

TestNG 允许我们给测试用例贴标签。我们可以根据这些标签有选择地的跳过或执行这些用例。

实例


import org.testng.annotations.Test;

import static org.testng.AssertJUnit.assertEquals;


@Test(groups = {"功能测试"})
public class TagTest {

    @Test(groups={"高", "正常"})
    public void testCase1(){
        assertEquals(2+2, 4);
    }

    @Test(groups = {"高", "正常"})
    public void testCase2(){
        assertEquals(5-3, 2);
    }
    @Test(groups = {"中", "正常"})
    public void testCase3(){
        assertEquals(2/1, 2);
    }

    @Test(groups = {"低", "异常"})
    public void testCase4(){
        assertEquals(2/0, 1);
    }

}

接下来配置 testng.xml ,根据标签筛选要运行的测试用例。

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="测试套件" verbose="1" >
    <test name="简单测试">
        <groups>
            <run>
                <exclude name="异常"  />   <!-- 排除不执行的测试用例 -->
                <include name="高"  />  <!-- 指定执行的测试用例 -->
            </run>
        </groups>

        <classes>
            <class name="test.sample.TagTest"/>
        </classes>
    </test>
</suite>
  • <groups>...</groups> 测试组标签。
  • <run>...</run> 运行测试。
  • <exclude> 根据groups的设置,排除不执行的用例。
  • <include> 根据groups的设置,指定执行的测试用例。

根据上面的配置,运行测试: testCase1 和 testCase2 两条用例将被执行。

不要忘了,我们给 TagTest 测类同样也划分了组(groups = {"功能测试"}),现在修改 testng.xml 配置。

……
<groups>
    <run>
        <exclude name="异常"  />   <!-- 排除不执行的测试用例 -->
        <include name="功能测试"  />  <!-- 指定执行的测试用例 -->
    </run>
</groups>
……

再次运行测试:testCase1、testCase2 和 testCase3 三条用例将被执行。