• TestNG的组测试和组中组测试


    在编写测试的过程中,我们经常遇到只想执行个别或者某一部分/某一类型的测试用例,这时我们可以使用TestNG的分组测试方法

    分组测试在配置时,TestNG执行的原则是:只保留最小集合进行执行

    看代码:

    1. /** 
    2.  *  
    3.  * <p> 
    4.  * Title: TestngGroups 
    5.  * </p> 
    6.  *  
    7.  * <p> 
    8.  * 对应配置文件testng-groups.xml  
    9.  * Description:使用groups进行分组测试,include和exclude的原则是保留最小集合, 
    10.  * </p> 
    11.  *  
    12.  * <p> 
    13.  * Company: 
    14.  * </p> 
    15.  *  
    16.  * @author : Dragon 
    17.  *  
    18.  * @date : 2014年10月13日 
    19.  */  
    20. public class TestngGroups {  
    21.     @Test(groups = { "functest""checkintest" })  
    22.     public void testMethod1() {  
    23.         System.err.println("groups = { functest, checkintest }");  
    24.     }  
    25.   
    26.     @Test(groups = { "functest""checkintest" })  
    27.     public void testMethod2() {  
    28.         System.err.println("groups = { functest, checkintest }");  
    29.     }  
    30.   
    31.     @Test(groups = { "functest" })  
    32.     public void testMethod3() {  
    33.         System.err.println("groups = { functest }");  
    34.     }  
    35.   
    36.     @Test(groups = { "checkintest" })  
    37.     public void testMethod4() {  
    38.         System.err.println("groups = { checkintest }");  
    39.     }  
    40.   
    41. }  

    配置文件:testng-groups.xml
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">  
    3. <suite name="framework_testng">  
    4.     <test verbose="2" name="TestGroups">  
    5.         <groups>  
    6.             <run>  
    7.                 <include name="functest" />  
    8.                 <exclude name="checkintest" />  
    9.             </run>  
    10.         </groups>  
    11.   
    12.         <classes>  
    13.             <class name="com.dragon.testng.annotation.TestngGroups" />  
    14.         </classes>  
    15.     </test>  
    16. </suite>  

    执行结果:
    1. groups = { functest }  
    2. PASSED: testMethod3  
    3.   
    4. ===============================================  
    5.     TestGroups  
    6.     Tests run: 1, Failures: 0, Skips: 0  
    7. ===============================================  
    8.   
    9.   
    10. ===============================================  
    11. framework_testng  
    12. Total tests run: 1, Failures: 0, Skips: 0  
    13. ===============================================  

    当我们的测试用例累积了很多以后,我们可能不需要测试之前的分组,只要测试刚刚写好的分组,这时候testng提供了一种新的配置方式,来实现这一功能,让测试人员只修改配置文件就完成测试

    注意:多个group测试时,xml文件dom顺序必须是'<groups>'标签必须在'<test>'标签内, 否则会 有空指针异常

    1. /** 
    2.  *  
    3.  * <p> 
    4.  * Title: TestngGroupsOfGroups 
    5.  * </p> 
    6.  *  
    7.  * <p> 
    8.  * 参考配置文件:testng-groupsOfGroups.xml 
    9.  * Description:使用<define>标签将测试方法在组内再次进行分组并以name属性进行区分, 
    10.  * <run>通过define标签的name进行调用,以后修改测试直接修改run调用的名称即可 
    11.  *  
    12.  * 注:<b>多个group测试时,xml文件dom顺序必须是'<groups>'标签必须在'<test>'标签内, 否则会 有空指针异常 
    13.  * </p> 
    14.  *  
    15.  * <p> 
    16.  * Company: 
    17.  * </p> 
    18.  *  
    19.  * @author : Dragon 
    20.  *  
    21.  * @date : 2014年10月13日 
    22.  */  
    23. public class TestngGroupsOfGroups {  
    24.   
    25.     @Test(groups = { "windows.xp" })  
    26.     public void testMethod5() {  
    27.         System.err.println("(groups = { windows.xp })");  
    28.     }  
    29.   
    30.     @Test(groups = { "windows.7" })  
    31.     public void testMethod6() {  
    32.         System.err.println("(groups = { windows.7 })");  
    33.     }  
    34.   
    35.     @Test(groups = { "windows.8" })  
    36.     public void testMethod7() {  
    37.         System.err.println("(groups = { windows.8 })");  
    38.     }  
    39. }  
    配置文件:testng-groupOfGroups.xml
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">  
    3. <suite name="framework_testng">  
    4.     <test verbose="2" name="TestGroupsOfGroups">  
    5.         <groups>  
    6.             <define name="windows.xp">  
    7.                 <include name="windows.xp" />  
    8.             </define>  
    9.             <define name="windows.7">  
    10.                 <include name="windows.7" />  
    11.             </define>  
    12.             <define name="all">  
    13.                 <include name="windows.*" />  
    14.             </define>  
    15.             <run>  
    16.                 <include name="all" />  
    17.                 <exclude name="windows.7" />  
    18.             </run>  
    19.         </groups>  
    20.         <classes>  
    21.             <class name="com.dragon.testng.annotation.TestngGroupsOfGroups" />  
    22.         </classes>  
    23.     </test>  
    24. </suite>  

    测试结果:(注意:此时 被运行的测试分组将在run标签内进行配置,include和exclude时,是根据Define标签的name来决定)
    1. (groups = { windows.xp })  
    2. (groups = { windows.8 })  
    3. PASSED: testMethod5  
    4. PASSED: testMethod7  
    5.   
    6. ===============================================  
    7.     TestGroupsOfGroups  
    8.     Tests run: 2, Failures: 0, Skips: 0  
    9. =============================================== 


    testNG参考资料:http://www.yiibai.com/html/testng/2013/0915300.html

                                     http://www.cnblogs.com/TankXiao/p/3888070.html

  • 相关阅读:
    【转载】搜索题目推荐
    HDU 4629 Burning 几何 + 扫描线
    HDU 4630 No Pain No Game 树状数组+离线查询
    SPOJ 416 Divisibility by 15 细节题
    【转载】树状数组题目
    SPOJ 274 Johnny and the Watermelon Plantation(TLE)
    SPOJ 227 Ordering the Soldiers 线段树 / 树状数组
    HDU 4620 Fruit Ninja Extreme 搜索
    Java序列化与反序列化
    Java IO包装流如何关闭?
  • 原文地址:https://www.cnblogs.com/wuyepiaoxue/p/5661196.html
Copyright © 2020-2023  润新知