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

  • 相关阅读:
    使用docker搭建nginx集群,实现负载均衡
    机器重启以后,主从出现报错:ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repos
    Slave_SQL_Running: No mysql同步故障解决方法
    docker搭建MySQL主从集群
    Linux下如何查看版本信息
    Docker中使用CentOS7镜像
    在 CentOS 上安装及使用 VirtualBox
    Docker Machine 安装使用教程
    main主函数
    is and ==
  • 原文地址:https://www.cnblogs.com/sucretan2010/p/14468169.html
Copyright © 2011-2022 走看看