zoukankan      html  css  js  c++  java
  • TestNG入门教程-10-测试类/测试组/测试方法的概念

    本篇来介绍Test Methods,Test classes ,Test groups的基本概念。了解这三个基本概念,有助于我们学习其他的功能。前面介绍了@Test下的before和after属性,其中就有beforeMethods和afterGroups等。

    这三个都会在testng.xml文件中存在。

    1.Test Methods(测试方法)

           官方定义是,凡是方法(或者叫函数)前面添加了@Test注释,就叫测试方法。这个很好理解,我们实际测试中,写的测试用例,其实就是许多个添加@Test的方法。

    2.Test Classes(测试类)

           测试类,一般我们新建一个Java类文件,如果里面方法有@Test,那么就是一个测试类文件。上面是写的复数。这个在testng.xml文件里可以体现,classes下可以有一个或者多个测试类文件。Classes相当于就是一个装class的容器,而class又相当于一个装method的容器。

    <classes>
        <class name="com.java.learn.TestMethodDemo"/>
    </classes>
    

      

    3.Test Groups(测试组)

           测试组,一个组可以包含多个methods。还是可以组嵌套,也是就是一个组可以属于是另外一个组管理。

    下面我们来举例,两个不同组用例的管理,我们有两个组,接口测试和功能测试。其实接口测试是属于功能测试的子集。新建一个测试类,写一些方法,有些方法属于接口测试,也同时属于功能测试,有些只属于一个。

    package com.java.learn;
     
    import org.testng.annotations.Test;
     
    /**
     * create by Anthony on 2017/11/7
     */
    public class TestGroupsDemo {
     
        @Test(groups = {"API Test", "Fucntion Test"})
        public void test01(){
            System.out.println("API Testing and Function testing");
        }
     
        @Test(groups = {"API Test"})
        public void test02(){
            System.out.println("API Testing");
        }
     
        @Test(groups = {"Function Test"})
        public void test03(){
            System.out.println("Function testing");
        }
     
        @Test
        public void test04(){
            System.out.println("not in API and Function testing");
        }
     
    }
    

      

    需求1:只需要运行API Test,也就是说不能运行Function Test.所以这个时候,testng.xml就要这么去写才能实现。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Default Suite">
     
        <test name="Testng_learn" >
            <groups>
                <run>
                    <include name="API Test"/>
                </run>
            </groups>
            <classes>
                <class name="com.java.learn.TestGroupsDemo"/>
            </classes>
        </test> <!-- Java_Learn -->
    </suite> <!-- Default Suite -->
    

      

    运行结果:

    [TestNG] Running:

     C:UsersAdministratorIdeaProjectsJava_Learn estng.xml

    API Testing and Function testing

    API Testing

    从打印结果来看,确实只运行了API Test这个group的用例。同样道理,把testng.xml对应的API Test换成Function Test就可以执行功能测试用例,而不会执行接口测试用例。

    需求2:我只需要执行API Test和Function Test

    我们写了4个用例,其中有一个不属于API Test和Function Test,这个是不能被运行

    Testing.xml如下设置

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Default Suite">
     
        <test name="Testng_learn" >
            <groups>
                <run>
                    <include name="Function Test"/>
                    <include name="API Test"/>
                </run>
            </groups>
            <classes>
                <class name="com.java.learn.TestGroupsDemo"/>
            </classes>
        </test> <!-- Java_Learn -->
    </suite> <!-- Default Suite -->
    

      

    这种方法很常见,例如我们一次性运行两个或者两个以上的测试组用例,就可以写多个include标签。

    方法2:

    利用正则匹配。有时候我们group的名称设置很长,我们记不住,这个时候就建议采用正则匹配,例如以API开头的group执行。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Default Suite">
     
        <test name="Testng_learn" >
            <groups>
                <run>
                    <include name="API.*"/>
                    <include name="Function.*"/>
                </run>
            </groups>
            <classes>
                <class name="com.java.learn.TestGroupsDemo"/>
            </classes>
        </test> <!-- Java_Learn -->
    </suite> <!-- Default Suite -->
    

      

    需求3:执行除API 和Funcation之外的用例

    除什么之外,我们可以用excloude标签来实现。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Default Suite">
     
        <test name="Testng_learn" >
            <groups>
                <run>
                    <exclude name="API Test"/>
                    <exclude name="Function Test"/>
                </run>
            </groups>
            <classes>
                <class name="com.java.learn.TestGroupsDemo"/>
            </classes>
        </test> <!-- Java_Learn -->
    </suite> <!-- Default Suite -->
    

      

    需求4:实现组嵌套管理执行用例

           前面我们已经创建了两个组,一个API Test,一个叫Function Test。现在我们用一个All 的组来管理这两个组。只要我run标签里,写执行All,那么就相当于执行了API Test和Function Test。这个场景,在实际工作中是肯定要使用的。例如webui自动化中,执行全部的用例,其实就是一个模块设置一个组,这些模块组都归All组管。Testing.xml的设置如下

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Default Suite">
     
        <test name="Testng_learn" >
            <groups>
                <define name="all">
                    <include name="API Test"/>
                    <include name="Function Test"/>
                </define>
     
                <run>
                    <include name="all"/>
                </run>
            </groups>
     
            <classes>
                <class name="com.java.learn.TestGroupsDemo"/>
            </classes>
        </test> <!-- Java_Learn -->
    </suite> <!-- Default Suite -->
    

      

    这里要注意,有些用例如果是不属于任何一个组,这里运行All,这些没有划分到某一个组的用例是不会执行的。所以,在实际工作中,建议每个用例都写上属于什么组,直接把模块当做组理解肯定就行,这样不会遗漏。

           本篇新介绍了@Test下的groups属性,已经如何利用testng.xml来设置不同的组需求到达不同用例执行和管理的目的。关于测试方法,测试类和测试组就介绍到这里。
    ————————————————

    原文链接:https://blog.csdn.net/u011541946/article/details/78565335

  • 相关阅读:
    leetcode 350. Intersection of Two Arrays II
    leetcode 278. First Bad Version
    leetcode 34. Find First and Last Position of Element in Sorted Array
    leetcode 54. Spiral Matrix
    leetcode 59. Spiral Matrix II
    leetcode 44. Wildcard Matching
    leetcode 10. Regular Expression Matching(正则表达式匹配)
    leetcode 174. Dungeon Game (地下城游戏)
    leetcode 36. Valid Sudoku
    Angular Elements
  • 原文地址:https://www.cnblogs.com/sucretan2010/p/14468169.html
Copyright © 2011-2022 走看看