zoukankan      html  css  js  c++  java
  • testNG总结二(group)

    一、什么是group

    利用group可以对test method进行分类,还可以定义group的group。group这个parameter和@Test 、@BeforeSuite
    @AfterSuite、@BeforeTest、
    @AfterTest、
    @BeforeGroups、@AfterGroups、@BeforeClass
    @AfterClass、@BeforeMethod
    @AfterMethod
    一起使用,可以用来定义修饰method,也可以用来修饰class。

    对于分类和配置testcase, 提供了极大的灵活和便利。

    二、group使用例子

    • group 作用在 method level:
        @Test(groups = {"linux","functionTest"})
        public void testFunction_1() {
            System.out.println("functionTest_linux");
            Assert.assertTrue(true, "functionTest_linux pass");    
        }
    
        @Test(groups = {"windows","functionTest"})
        public void testFunction_2() {
            System.out.println("functionTest_windows");
            Assert.assertTrue(true, "functionTest_windows pass");    
        }
    
        @Test(groups = {"linux","regressionTest"})
        public void testRegression_1() {
            System.out.println("regressionTest_linux");
            Assert.assertTrue(true, "regressionTest_linux pass");    
        }
        
        @Test(groups = {"windows","regressionTest"})
        public void testRegression_2() {
            System.out.println("regressionTest_windows");
            Assert.assertTrue(true, "regressionTest_windows pass");    
        }
    • group 作用在class level:
    @Test( groups = {"group on class"})
    public class SampleGroupOnClass {
        @Test
        public void testGroupOnClass_1() {
            System.out.println("testGroupOnClass_1");
            Assert.assertTrue(true, "testGroupOnClass_1 pass");    
        }
        
        @Test
        public void testGroupOnClass_2() {
            System.out.println("testGroupOnClass_2");
            Assert.assertTrue(true, "testGroupOnClass_2 pass");    
        }
    }
    • group在suite file中的定义,group的group
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
    <suite name="TestNG annotation Suite" parallel="false">
    <!--     <listeners>
            <listener class-name="com.testNG.TestNGListener" />
        </listeners> -->
    
        <test name="Test on group concept">
            <groups>
                <define name="testPerpective">
                    <include name="functionTest"/>
                    <include name="performanceTest"/>
                    <include name="regressionTest"/>   
                </define>
                <define name="platform">
                       <include name="windows"/>
                    <include name="linux"/>
                    <include name="solaris"/>
                </define>
                <define name="all">
                     <include name="platform"/>  
                     <include name="testPerpective"/>    
                </define>
                <run>
                    <include name="testPerpective" />  
                    <include name="group on class" />          
                </run>
            </groups>
            <classes>
                <class name="com.testNG.SampleGroup"/>
                 <class name="com.testNG.SampleGroupOnClass"/>
            </classes>
        </test>
    </suite>

    三、通过例子直观理解

    SampleGroup.java:  对method进行group,分为linux windows solaris, functionTest, performanceTest, regressionTest组;

    SampleGroupOnClass.java: group作用在class level, 整个class被@Test修饰的method都属于一类;

    group.xml:定义了group的group。

    1)直接运行SampleGroup.java: 8个testcase

    [RemoteTestNG] detected TestNG version 6.14.15
    functionTest_linux
    functionTest_windows
    performanceTest_linux
    performanceTest_windows
    regressionTest_linux
    regressionTest_windows
    solaris_test1
    solaris_test2
    PASSED: testFunction_1
    PASSED: testFunction_2
    PASSED: testPerformance_1
    PASSED: testPerformance_2
    PASSED: testRegression_1
    PASSED: testRegression_2
    PASSED: test_1
    PASSED: test_2

    ===============================================
         Default test
         Tests run: 8, Failures: 0, Skips: 0
    ===============================================

    2) 直接运行SampleGroupOnClass.java:2个testcase

    输出略:

    3) 运行:group.xml

    定义:

            <groups>
                 <define name="testPerpective">
                     <include name="functionTest"/>
                     <include name="performanceTest"/>
                     <include name="regressionTest"/>  
                 </define>
                 <define name="platform">
                        <include name="windows"/>
                     <include name="linux"/>
                     <include name="solaris"/>
                 </define>
                 <define name="all">
                      <include name="platform"/> 
                      <include name="testPerpective"/>   
                 </define>
                 <run>
                     <include name="testPerpective" />  <!--  包含 SampleGroup.java 中的6个test method--> 
                     <include name="group on class" />  <!--  包含 SampleGroupOnClass.java 中的2个test method-->         
                 </run>
             </groups>

    输出:

    functionTest_linux
    functionTest_windows
    performanceTest_linux
    performanceTest_windows
    regressionTest_linux
    regressionTest_windows
    testGroupOnClass_1
    testGroupOnClass_2

    ===============================================
    TestNG annotation Suite
    Total tests run: 8, Failures: 0, Skips: 0
    ===============================================

    solaris group的例子没有被包含在内,故不运行

    四、groups的其他概念

    1) run标签下面, 还有exclude标签;

    2) groups标签不仅可以放到test标签的下面,还可以放到suite标签的下面。如果放到suite标签的下面,那么作用域就变大为,适用于所有的test。

    具体可以参照:

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

  • 相关阅读:
    通过构造函数检查生成对象个数
    动手动脑二
    产生随机数的几种方法
    素数输出
    递归实现回文串
    java的方法重载
    统计单词频率
    四则运算和随机验证码
    微信小程序--家庭记账本开发--04
    微信小程序--家庭记账本开发--03
  • 原文地址:https://www.cnblogs.com/gracejiang/p/15304873.html
Copyright © 2011-2022 走看看