方法分组测试

方法分组测试

@Test(groups = {“server”}) 方法属于一个组
@Test(groups = {“client”}) 方法属于一个组
@Test(groups = {“server”,“client”}) 方法属于个组
@BeforeGroups(“server”) 这是server组运行之前运行的方法
@AfterGroups(“server”) 这是server组运行之后运行的方法

新建com.course.testng.groups包,包里新建GroupsOnMethod类,代码如下

package com.course.testng.groups;

import org.testng.annotations.AfterGroups;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.Test;

public class GroupsOnMethod {
	
	@Test(groups = {"server"})
	public void test1() {
		System.out.println("这是服务端组的测试方法1");
	}
	
	@Test(groups = {"server"})
	public void test2() {
		System.out.println("这是服务端组的测试方法2");
	}
	
	@Test(groups = {"client","server"})
	public void test3() {
		System.out.println("这是服务端组合客户端组共有的测试方法5");	
	}
	
	@Test(groups = {"client"})
	public void test4() {
		System.out.println("这是客户端组的测试方法3");
	}
	
	@Test(groups = {"client"})
	public void test5() {
		System.out.println("这是客户端组的测试方法4");
	}
	
	
	
	@BeforeGroups("server")
	public void berforeGroupsOnClient() {
		System.out.println("这是服务端组运行之前运行的方法");
	}

	@AfterGroups("server")
	public void afterGroupsOnClient() {
		System.out.println("这是服务端组运行之后运行的方法");
	}
	
}

测试结果,@BeforeGroups(“server”)标签和@AfterGroups(“server”)标签包含 {“server”}组和 {“server”,“client”}组的方法
在这里插入图片描述

需求1:只需要运行client组方法时
在src/main/resources包下新建groupsOnMethod.xml文件,代码如下

<?xml version="1.0" encoding="UTF-8"?>

<suite name="groups">
 
    <test name="Testng_learn" >
        <groups>
            <run>
                <include name="client"/>
            </run>
        </groups>
        <classes>
            <class name="com.course.testng.groups.GroupsOnMethod"/>
        </classes>
    </test> <!-- Java_Learn -->
</suite> <!-- Default Suite -->

测试结果,会执行{“client”}组和{“server”,“client”}组的方法
在这里插入图片描述

需求2:只需要运行client组和server方法,有一些不属于client组和server方法。
方法一:xml文件里需要新增内容:

<?xml version="1.0" encoding="UTF-8"?>

<suite name="groups">
 
    <test name="Testng_learn" >
        <groups>
            <run>
                <include name="client"/>
                <include name="server"/>
            </run>
        </groups>
        <classes>
            <class name="com.course.testng.groups.GroupsOnMethod"/>
        </classes>
    </test> <!-- Java_Learn -->
</suite> <!-- Default Suite -->

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

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

<?xml version="1.0" encoding="UTF-8"?>

<suite name="groups">
 
    <test name="Testng_learn" >
        <groups>
            <run>
                <include name="cli.*"/>
                <include name="ser.*"/>
            </run>
        </groups>
        <classes>
            <class name="com.course.testng.groups.GroupsOnMethod"/>
        </classes>
    </test> <!-- Java_Learn -->
</suite> <!-- Default Suite -->

需求3:执行除client 之外的用例
除什么之外,我们可以用excloude标签来实现。

<?xml version="1.0" encoding="UTF-8"?>

<suite name="groups">
 
    <test name="Testng_learn" >
        <groups>
            <run>
                <exclude name="cli.*"/>
            </run>
        </groups>
        <classes>
            <class name="com.course.testng.groups.GroupsOnMethod"/>
        </classes>
    </test> <!-- Java_Learn -->
</suite> <!-- Default Suite -->

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

<?xml version="1.0" encoding="UTF-8"?>

<suite name="groups">
 
    <test name="Testng_learn" >
        <groups>
        	<define name="all">
        		<include name="client"/>
        		<include name="server"/>
        	</define>
        	
            <run>
                <include name="all"/>
            </run>
        </groups>
        <classes>
            <class name="com.course.testng.groups.GroupsOnMethod"/>
        </classes>
    </test> <!-- Java_Learn -->
</suite> <!-- Default Suite -->

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

猜你喜欢

转载自blog.csdn.net/weixin_42884654/article/details/82890263
今日推荐