testNG之组测试
@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之组测试的更多相关文章
- TestNG的组测试和组中组测试
在编写测试的过程中,我们经常遇到只想执行个别或者某一部分/某一类型的测试用例,这时我们可以使用TestNG的分组测试方法 分组测试在配置时,TestNG执行的原则是:只保留最小集合进行执行 看代码: ...
- TestNg 4.组测试中的方法分组测试
看以下代码: package com.course.testng.groups; import org.testng.annotations.AfterGroups; import org.testn ...
- testng入门教程7 TestNG组测试
在TestNG中组测试是一个新的创新功能,它不存在于JUnit框架,它允许调度到适当的部分方法和瓶坯复杂的测试方法分组.您不仅可以声明属于群体的那些方法,但你也可以指定一组包含其他组.然后,TestN ...
- 学习使用TestNG进行数据驱动测试
转自: https://mp.weixin.qq.com/s/8Bd8LEhiC2pu2VMcyNMGlQ 学习使用TestNG进行数据驱动测试 赵吃饭 51Testing软件测试网 前天 学习使 ...
- testng入门教程12 TestNG执行多线程测试
testng入门教程 TestNG执行多线程测试 testng入门教程 TestNG执行多线程测试 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者 ...
- testng多线程并行执行测试
testng多线程并行执行测试 testng多线程并行执行测试 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力.TestNG允许我们以 ...
- testNG之异常测试
@Test(expectedExceptions = ) 在测试的时候,某些用例的输入条件,预期结果是代码抛出异常,那么这个时候就需要testNG的异常测试,先看一段会抛出异常的代码 exceptio ...
- TestNG 组测试
方法分组测试 1. 给@Test注解后面加groups参数,如 @Test(groups = "groupa") 2. 可以添加@BeforeGroups和@AfterGroups ...
- TestNG(七)组测试
package com.course.testng.groups; import org.testng.annotations.AfterGroups; import org.testng.annot ...
随机推荐
- js 属性getset
属性访问器 一.像C#写实体类一样的写法 var attr={ $x:10,//必须$开头 get x() { return this.$x+1; }, set x(val) { this.$x=va ...
- 2018-2019-2 20175120 实验四《Android程序设计》实验报告
任务一:Android Studio的安装测试 任务要求:参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章: 参考 ...
- Android实战技巧:Dialog (转)
转:http://blog.csdn.net/hitlion2008/article/details/7567549#t0 Dialog是任何系统都必须有的一个控件,作为辅助窗口,用于显示一些消息,或 ...
- 老牌激活工具– Microsoft Toolkit 2.4.3 + 详细图文教程【转】
老牌激活工具-- Microsoft Toolkit 2.4.3 + 详细图文教程 windowsToolkit是一个一键激活MS Office 2010的工具.原理就是利用KMS来激活,不是新的激活 ...
- phpstorm中sass编译时目录或内容包含中文字符报错
ruby版本:ruby 2.4.1p111 (2017-03-22 revision 58053) [x64-mingw32] sass版本:Sass 3.4.24 (Selective Steve) ...
- 嵌入式C语言3.4 关键字---类型描述符auto/register/static/const/extern/volatile/
对内存资源存放位置的限定 1. auto 默认值---分配的内存都是可读可写的区域 auto int a; 区域如果出现 {} 我们认为在栈空间 2. register register int a; ...
- apache基础,apache环境搭建,apache的3种使用方式(IP、端口、域名)
一台服务器上多个网站同时运行,基于域名访问,IP访问,端口访问. http服务使用的端口是80 HTTPS使用的是443 协议名称://机器地址:端口号/路径名/文件名 协议名称—— 所使用的访问协议 ...
- [LeetCode] 181.超过经理收入的员工
Employee表包含所有员工,他们的经理也属于员工.每个员工都有一个 Id,此外还有一列对应员工的经理的 Id. +----+-------+--------+-----------+ | Id | ...
- 组件化框架设计之阿里巴巴开源路由框架——ARouter原理分析(一)
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 背景 当项目的业务越来越复杂,业务线越来越多的时候,就需要按照业 ...
- python基础----求水仙花数
水仙花数,即一个三位数,各个位上的数字的三次方相加,等于该数本身.如:153 = 1**3 + 5 ** 3 + 3 ** 3 def is_narc_num(n): # if n <100 o ...