上一篇Java接口自动化系列文章:Java接口自动化之log4j日志框架,主要介绍log4j日志介绍、日志三大组成部分及日志实战。

以下主要介绍TestNG的简介、@Test注解及其属性。

01
TestNG简介

1 TestNG介绍
TestNG 是java的一个单元测试框架,TestNG吸取了Junit框架的思想,形成了更强大的集成测试框架。

2 TestNG特点
支持注解;
灵活的运行配置;
支持多线程、忽略、异常、参数化等测试。

3 加入TestNG依赖
在maven项目的pom.xml中,添加内容如下:

org.testng
testng
7.0.0

02
@Test注解及常用属性

@@Test是TestNG 最基本的注解,用来将方法标注为测试方法。接下来会介绍@Test注解的常用属性
@Test是TestNG 最基本的注解,用来将方法标注为测试方法。接下来会介绍@Test注解的常用属性。

1 enable 测试方法是否执行
enable默认是 true , 表示执行这个方法,如果设置为 false ,则在运行时不会执行这个测试方法。
import org.testng.annotations.Test;
public class TestDemo {
@Test(enabled = true)
public void testDemo1(){
System.out.println(“这是testDemo1”);
}
@Test(enabled = false)
public void testDemo2(){
System.out.println(“这是testDemo2”);
}
}

运行结果为:
图片
从上图可以看出,enabled为true的方法执行了,enabled为false的方法未执行。
2 dependsOnMethods 依赖方法
在依赖的方法运行完成之后运行当前方法,如果依赖方法测试不通过,那么当前方法也不会继续运行了。
依赖的方法可以有多个,格式为:@Test(dependsOnMethods = { “method1” , “method2” })。
修改testDemo1代码,运行时抛出异常,代码如下:
import org.testng.annotations.Test;
public class TestDemo {
@Test()
public void testDemo1(){
int i=10;
System.out.println(i/0);
System.out.println(“这是testDemo1”);
}
@Test(dependsOnMethods = {“testDemo1”})
public void testDemo2(){
System.out.println(“这是testDemo2”);
}
}

运行结果为:
图片
从上图可以看出testDemo1方法运行失败后,testDemo2方法被忽略运行了。

3 groups 分组
在运行时,一个组的方法会一起运行,然后再运行下一个组的方法;
格式为:@Test(groups = “groupName”)。
import org.testng.annotations.Test;
import org.testng.annotations.BeforeGroups;
import org.testng.annotations.AfterGroups;
public class TestDemo {
@BeforeGroups(groups = “server”)
public void beforeGroupsOnServer() {
System.out.println(“服务端组运行前执行的方法。。。”);
}
@BeforeGroups(groups = “client”)
public void beforeGroupsOnClient() {
System.out.println(“客户端组运行前执行的方法。。。”);
}
@Test(groups = “server”)
public void test1() {
System.out.println(“server test1 run …”);
}
@Test(groups = “server”)
public void test2() {
System.out.println(“server test2 run …”);
}
@Test(groups = “client”)
public void test3() {
System.out.println(“client test3 run …”);
}
@Test(groups = “client”)
public void test4() {
System.out.println(“client test4 run …”);
}
@AfterGroups(groups = “server”)
public void afterGroupsOnServer() {
System.out.println(“服务端组运行之后执行的方法。。。”);
}
@AfterGroups(groups = “client”)
public void afterGroupsOnClient() {
System.out.println(“客户端组运行之后执行的方法。。。”);
}
}
运行结果为:
服务端组运行前执行的方法。。。
server test1 run …
server test2 run …
服务端组运行之后执行的方法。。。
客户端组运行前执行的方法。。。
client test3 run …
client test4 run …
客户端组运行之后执行的方法。。。

Default Suite
Total tests run: 4, Failures: 0, Skips: 0

4 timeOut 超时属性
格式:@Test(timeOut = 3000) 设置超时时间,单位为毫秒。

import org.testng.annotations.Test;
public class TestDemo {
// 单位为毫秒值,3秒内没有响应,就运行失败,反之成功
@Test(timeOut = 3000)
public void testSuccess() throws InterruptedException {
Thread.sleep(2000);
}
// 单位为毫秒值,2秒内没有响应,就运行失败,反之成功
@Test(timeOut = 2000)
public void testFail() throws InterruptedException {
Thread.sleep(3000);
}
}

运行结果为:
图片
从上图可以看出,testFail方法因为超时运行失败。

5 多线程测试
格式:@Test(invocationCount = 10,threadPoolSize = 3)。
参数说明:
invocationCount:线程调用的次数,默认1次。
threadPoolSize:线程池,需与invocationCount组合使用。

接下来编写一个方法,定义3个线程,执行方法10次。
import org.testng.annotations.Test;
public class TestDemo {
@Test(invocationCount = 10,threadPoolSize = 3)
public void testDemo(){
System.out.println("---------");
System.out.printf(“Thread Id : %s%n”,Thread.currentThread().getId());
}
}

运行结果为:
[TestNG] Running:



Thread Id : 13

Thread Id : 12
Thread Id : 14

Thread Id : 13

Thread Id : 14

Thread Id : 12


Thread Id : 12

Thread Id : 13

Thread Id : 14

Thread Id : 12

Default Suite
Total tests run: 10, Failures: 0, Skips: 0

(完)

Java接口自动化之TestNG单元测试框架(一)相关推荐

  1. Java接口自动化之Maven工具使用

    VOL 190 30 2020-12 今天距2021年1天 这是ITester软件测试小栈第190次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 08 ...

  2. idea上java接口自动化_Java接口自动化之IDEA创建及运行maven项目

    本文2564字 阅读约需7分钟第195次推送 Maven作为一个项目管理工具,是一组标准集合,一个项目的生命周期.一个依赖管理系统,以下主要介绍IDEA创建及运行maven项目. 01创建maven项 ...

  3. java接口自动化书籍_java接口自动化优化(一)

    优化extentreports在线样式改为离线加载自己项目下的样式 主要解决extentreports在线加载失败问题 上篇文章介绍了通过testng编写用例后使用extentreports作为测试报 ...

  4. java接口自动化(四) - 企业级代码管理工具Git的应用

    1.简介 首先我们自己需要将自己的代码上传到GitHub上边做好备份.用来避免万一由于某些不可控的非人为因素或者人为因素造成的代码丢失.而且GitHub是一个开源的代码管理工具.所以宏哥这里再次介绍一 ...

  5. java接口自动化Excel占位符_基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport的接口自动化测试框架...

    接口自动化框架 项目说明 本框架是一套基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport而设计的数据驱动接口自动化测试框架,TestNG ...

  6. java接口自动化(三) - 手工接口测试到自动化框架设计之鸟枪换炮

    1.简介 上一篇宏哥介绍完了接口用例设计,那么这一章节,宏哥就趁热打铁介绍一下,接口测试工具.然后小伙伴们或者童鞋们就可以用接口测试工具按照设计好的测试用例开始执行用例进行接口手动测试了.关于手动测试 ...

  7. java接口自动化监控_java接口自动化(三) - 手工接口测试到自动化框架设计之鸟枪换炮...

    1.简介 上一篇宏哥介绍完了接口用例设计,那么这一章节,宏哥就趁热打铁介绍一下,接口测试工具.然后小伙伴们或者童鞋们就可以用接口测试工具按照设计好的测试用例开始执行用例进行接口手动测试了.关于手动测试 ...

  8. Java接口自动化框架系列07:Web接口自动化测试框架设计思路

    1.Java web接口自动化框架 框架名称:Java+Maven+httpClients+TestNg+Allure (因本次只讲解java部分,未包括git和jenkins,如果是包括git和je ...

  9. java接口自动化_【亲测】Java 接口自动化步骤

    GET请求(Maven) 一. src/main/java 1.[地址--HOST]创建并设置配置文件(后缀名.properties的文本文件):存放接口请求的host地址 2.[地址]TestBas ...

最新文章

  1. 100% .NET Control_使用CurrencyManager 创建一个导航条来控制DatagGrid的XNavBar控件(VB.NET)....
  2. SRS前需求双向追溯解决方法
  3. 菜鸟学SSH(十五)——简单模拟Hibernate实现原理
  4. Oracle redo
  5. 梦想与现实之间的距离
  6. tftp的安装、设置以及put、get传输实验
  7. 多希望当年做工程师时我能明白这三个道理!
  8. 深度学习2.0-13.神经网络与全连接层之张量实战
  9. Spring Cloud和Spring Boot高级视频
  10. 传统媒体如何借力微信
  11. 路由器的工作原理定义
  12. l05173芯片针脚图_芯片引脚图及引脚描述
  13. java点歌系统代码_基于jsp的KTV点歌系统-JavaEE实现KTV点歌系统 - java项目源码
  14. 对于初学者的JavaScript 教程
  15. 使用wait函数获取子进程终止状态
  16. ubuntu桌面管理环境 gdm3,KDM,lightdm
  17. Roboware安装
  18. hdu-2852 KiKi's K-Number---二分+树状数组
  19. python xarray选中一年并删除其时间维度,返回所选年份数据
  20. Ad-hoc Testing(随机测试)

热门文章

  1. linux c++应用程序内存高或者占用CPU高的解决方案_20161213
  2. VS CODE离线安装C/C++扩展的方法
  3. linux系统 安卓系统安装教程,Linux系统下安装android sdk的方法步骤
  4. qtabbar设置不同宽度_透水地坪需要设置伸缩缝吗?
  5. 字典中文乱码怎么处理_CATIA教程技巧和二次开发宏:我的零件有很多的几何体,但是几何体的名称是乱的,还有乱码,影响我的后续操作,我该怎么处理?...
  6. python中set集合_Python中的SET集合操作
  7. type=radio增加onclick没有效果_佳能6d+小痰盂镜头,加1张餐巾纸拍摄花卉,朦胧美效果你喜欢吗?...
  8. php二级评论怎么实现,ThinkPHP视图模型实现二级嵌套评论的查询
  9. 服务器是通用计算机吗,服务器与台式计算机不同吗?有何区别?
  10. linux定时重启命令