@Test(groups = {""})

  在执行测试用例的时候,往往一个功能依赖多个测试用例,比如流程的测试,那么这个时候就可以用到组测试,把流程涉及到测试用例都分到同一组里,按组执行即可。

  testNG的组通过@Test的groups属性来指定的,一个方法可以属于一个组(@Test(groups = {"checkintest"})),也可以属于多个组(@Test(groups = {"functest","checkintest"}))。

  假设现在有3个java代码,common.java、functionA.java、functionB.java,测试流程涉及到common.java中 login() 和 quit() 方法、functionA.java中的 testMethod1() 方法、functionB.java中的 testMethod3() 方法,那么可以将这4个方法分到同一组里functest,代码如下:

common.java:

import org.testng.annotations.Test;

public class common {
@Test(groups = {"functest","checkintest"})
public void login() {
System.out.println("login");
} @Test(groups = {"functest","checkintest"})
public void quit() {
System.out.println("quit");
} @Test(groups = {"checkintest"})
public void init() {
System.out.println("init");
}
}

functionA.java:

import org.testng.annotations.Test;

public class functionA {
@Test(groups = {"functest"})
public void testMethod1() {
System.out.println("this is testMethod1");
} @Test(groups = {"functest2"})
public void testMethod2() {
System.out.println("this is testMethod2");
}
}

functionB.java:

import org.testng.annotations.Test;

public class functionB {
@Test(groups = {"functest"})
public void testMethod3() {
System.out.println("this is testMethod3");
} @Test(groups = {"functest2"})
public void testMethod4() {
System.out.println("this is testMethod4");
}
}

testng.xml:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite1" verbose="1" >
<test name="Regression1" preserve-order="true">
<groups>
<run>
<include name = "functest" />
</run>
</groups>
<classes>
<class name="common"></class>
<class name="functionA"></class>
<class name="functionB"></class>
</classes>
</test>
</suite>

注意:testng.xml需要指定要测试的组(<groups>……</groups>)和组所在的class(<classes>……</classes>)

运行testng.xml,执行结果如下:

login
quit
this is testMethod1
this is testMethod3

@Test(priority = )

一般quit都是在流程的最后才执行,如何控制组里方法执行的顺序呢?可以通过@Test的priority属性,testNG按照priority从小到大的顺序执行

修改common.java,在@Test中添加属性priority = 1和priority = 4:

import org.testng.annotations.Test;

public class common {
@Test(groups = {"functest","checkintest"},priority = 1)
public void login() {
System.out.println("login");
} @Test(groups = {"functest","checkintest"},priority = 4)
public void quit() {
System.out.println("quit");
} @Test(groups = {"checkintest"})
public void init() {
System.out.println("init");
}
}

修改functionA.java,在@Test中添加属性priority = 2:

import org.testng.annotations.Test;

public class functionA {
@Test(groups = {"functest"},priority = 2)
public void testMethod1() {
System.out.println("this is testMethod1");
} @Test(groups = {"functest2"})
public void testMethod2() {
System.out.println("this is testMethod2");
}
}

修改functionB.java,在@Test中添加属性priority = 3:

import org.testng.annotations.Test;

public class functionB {
@Test(groups = {"functest"}, priority = 3)
public void testMethod3() {
System.out.println("this is testMethod3");
} @Test(groups = {"functest2"})
public void testMethod4() {
System.out.println("this is testMethod4");
}
}

再次运行testng.xml,执行结果如下:

login
this is testMethod1
this is testMethod3
quit

如何只执行组里 testMethod1() 和 testMethod3() 方法,而不执行 login() 和 quit() 方法呢?

修改testng.xml,添加<exclude name="checkintest"></exclude>,排除在checkintest组里的方法

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite1" verbose="1" >
<test name="Regression1" preserve-order="true">
<groups>
<run>
<include name = "functest" />
<exclude name="checkintest"></exclude>
</run>
</groups>
<classes>
<class name="common"></class>
<class name="functionA"></class>
<class name="functionB"></class>
</classes>
</test>
</suite>

再次运行testng.xml,执行结果如下:

this is testMethod1
this is testMethod3

testNG之组测试的更多相关文章

  1. TestNG的组测试和组中组测试

    在编写测试的过程中,我们经常遇到只想执行个别或者某一部分/某一类型的测试用例,这时我们可以使用TestNG的分组测试方法 分组测试在配置时,TestNG执行的原则是:只保留最小集合进行执行 看代码: ...

  2. TestNg 4.组测试中的方法分组测试

    看以下代码: package com.course.testng.groups; import org.testng.annotations.AfterGroups; import org.testn ...

  3. testng入门教程7 TestNG组测试

    在TestNG中组测试是一个新的创新功能,它不存在于JUnit框架,它允许调度到适当的部分方法和瓶坯复杂的测试方法分组.您不仅可以声明属于群体的那些方法,但你也可以指定一组包含其他组.然后,TestN ...

  4. 学习使用TestNG进行数据驱动测试

    转自: https://mp.weixin.qq.com/s/8Bd8LEhiC2pu2VMcyNMGlQ 学习使用TestNG进行数据驱动测试 赵吃饭 51Testing软件测试网 前天   学习使 ...

  5. testng入门教程12 TestNG执行多线程测试

    testng入门教程 TestNG执行多线程测试 testng入门教程 TestNG执行多线程测试 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者 ...

  6. testng多线程并行执行测试

    testng多线程并行执行测试 testng多线程并行执行测试 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力.TestNG允许我们以 ...

  7. testNG之异常测试

    @Test(expectedExceptions = ) 在测试的时候,某些用例的输入条件,预期结果是代码抛出异常,那么这个时候就需要testNG的异常测试,先看一段会抛出异常的代码 exceptio ...

  8. TestNG 组测试

    方法分组测试 1. 给@Test注解后面加groups参数,如 @Test(groups = "groupa") 2. 可以添加@BeforeGroups和@AfterGroups ...

  9. TestNG(七)组测试

    package com.course.testng.groups; import org.testng.annotations.AfterGroups; import org.testng.annot ...

随机推荐

  1. docker 报错端口被占用 sqlserver 占用80端口

    本想开启个容器,却发现有程序居然占用了我的80端口 C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response fr ...

  2. loadRunner函数之lr_set_debug_message

    lr_set_debug_message:选择性开启扩展日志 vuser_init: vuser_init() { ; } Action: Action() { ExtendedLog(); // 开 ...

  3. SQL Server 2005 的动态管理视图DMV和函数DMF

    优化 的动态管理视图DMV和函数DMF SQL Server 05提供了动态管理视图Dynamic Management Views和函数 Functions,方便了我们对系统运行情况的监控,故障诊断 ...

  4. 【HDOJ6583】Typewriter(SAM,DP)

    题意:给定一个由小写字母组成的字符串,每次可以花费p在串后加上任意一个字母,花费q在串后复制一个当前串的子串,问生成字符串的最小花费 n<=2e5,1<=p,q<2^31 思路: S ...

  5. Visual Studio 2008 附加进程调试

    关于附加进程调试的问题: 在项目当中经常使用“附加到进程”来调试项目,感觉挺方便的.我们做的项目通常都会发布到IIS(特别是B/S),一可以直接通过地址栏输入地址就可以运行项目,不必去使用开发工具来打 ...

  6. LOJ 6433 「PKUSC2018」最大前缀和——状压DP

    题目:https://loj.ac/problem/6433 想到一个方案中没有被选的后缀满足 “该后缀的任一前缀和 <=0 ”. 于是令 dp[ S ] 表示选了点集 S ,满足任一前缀和 & ...

  7. Go的struct

    1. 前言 Go的struct声明允许字段附带Tag来对字段做一些标记. 该Tag不仅仅是一个字符串那么简单,因为其主要用于反射场景,reflect包中提供了操作Tag的方法,所以Tag写法也要遵循一 ...

  8. Caused by: java.lang.ClassNotFoundException: com.mchange.v2.cfg.MConfig

    出错原因:c3p0 为0.9.5.2版本 而使用了 mchange-commons-java 的版本为0.2.3.4,mchange-commons-java 的版本太高了, 将mchange-com ...

  9. 115、TensorFlow变量的使用

    # To use the value of a tf.Variable in a Tesnorflow graph , simply treat it like a normal tf.Tensor ...

  10. 108、TensorFlow 类型转换

    # 除了维度之外Tensorflow也有数据类型 # 请参考 tf.DataType # 一个张量只能有一个类型 # 可以使用tf.cast,将一个张量从一个数据类型转换到另一个数据类型 # 下面代码 ...