(六)TestNg中的软断言和硬断言
原文链接:https://cloud.tencent.com/developer/article/1479172
前言
在执行自动化测试脚本的时候,我们需要自动判断测试脚本执行完成后的实际结果是否与预期结果一致,这个时候就需要在程序运行之前写入断言,判断当前程序执行后是否正常。
关于TestNG断言分为两种:
- 软断言
- 硬断言
硬断言
在TestNg中,Assert类为硬断言,里面有多个静态方法被称为硬断言,特点就是,如果脚本运行断言失败,马上停止运行,后面代码将不会被执行。
TestNG中提供了多个assert*()方法,主要是匹配不同的数据类型和集合类及其他对象操作。
举例如下:
import org.testng.Assert;
import org.testng.annotations.Test; public class TestAssert { @Test
public void testAssert() throws Exception {
Assert.assertEquals(4, 2 * 2);
Assert.assertEquals(5,1+9);
}
}
运行上面的代码,结果如下:

从上面可以看出assertEquals中Expected和Actual不相等,如果实际结果和预期结果不相等,就会抛出断言异常并显示内容,这样抛出的错误,更方便定位错误的原因和具体的业务逻辑。
关于assert常见断言方法及描述如下:
- assertTrue:判断是否为True。
- assertFalse:判断是否为false。
- assertSame:判断引用地址是否相同。
- assertNotSame:判断引用地址是否不相同。
- assertNull:判断是否为null。
- assertNotNull:判断是否不为null。
- assertEquals:判断是否相等,Object类型的对象需要实现haseCode及equals方法。
- assertNotEquals:判断是否不相等。
- assertEqualsNoOrder:判断忽略顺序是否相等
软断言
在TestNg中,SoftAssert类为软断言,特点是如果运行断言失败,不会停止运行,会继续执行这个断言下的其他语句或者断言,不影响其他断言的运行。
使用说明:assertAll()一定要放在该测试类的最后一个断言后面,软断言的类,叫SoftAssert.java,这个类是需要创建实例对象,才能调用相关实例方法进行软断言。
举例如下:
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert; public class TestSoftAssert { @Test
public void testSoftAssert(){
System.out.println("脚本执行开始");
//实例化SoftAssert
SoftAssert assertion = new SoftAssert();
assertion.assertEquals(5, 6,"我俩不是一样大");
System.out.println("脚本执行结束");
System.out.println("我是观望,到这会不会执行的");
//这个必须放到最后,没什么可说的
assertion.assertAll();
}
}
运行上面的代码,结果如下:

通过运行结果发现,可以看到在断言5和6相等的这行代码后,,还有其他的语句,如果这里采用的是硬断言,那么后面的"脚本执行结束"和"我是观望,到这会不会执行的"是不会输出的。也就是这两条语句不会输出。这个就是SoftAssert的优点,再强调一次,最后一定要调用assertAll()方法。
(六)TestNg中的软断言和硬断言的更多相关文章
- TestNg中的断言你真的了解吗
前言 在执行自动化测试脚本的时候,我们需要自动判断测试脚本执行完成后的实际结果是否与预期结果一致,这个时候就需要在程序运行之前写入断言,判断当前程序执行后是否正常. 关于TestNG断言分为两种: 软 ...
- testNG 学习笔记 Day 3 常用的断言
TestNG中最常用的一个断言类是Assert.java,里面有多个静态方法,这个类我们习惯叫硬断言.对应的还有一个软断言的类,叫SoftAssert.java,这个类是需要创建实例对象,才能调用相关 ...
- 共享池之八:软解析、硬解析、软软解析 详解一条SQL在library cache中解析涉及的锁
先来张大图: 结合上图来说明一下解析的各个步骤涉及的锁. 软解析.硬解析.软软解析区别的简单说明: 为了将用户写的sql文本转化为oracle认识的且可执行的语句,这个过程就叫做解析过程. 解析分为硬 ...
- linux中的软、硬链接
linux中的软.硬链接 硬链接 硬链接(hard link),如果文件B是文件A的硬链接,则A的inode节点号与B的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同 ...
- java&testng中Assert
用testng中的assert做断言时,如果断言失败,则在当前方法中失败的语句后的语句将不会再执行: 如图: 看控制台输出语句:
- 安卓平台 全面支持软解和硬解的SDK-Demo源代码开放
专业做视频编解码的SDK开发工作. 2015年12月1日10:46:55: 更新到1.5.0版本 功能列表: 基本播放: 1,正常播放, 支持MP4,FLV,AVI,TS,3GP,RMVB,WM,WM ...
- SQL 软解析和硬解析详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt329 当客户端进程,将SQL语句通过监听器发送到Oracle时, 会触发一个 ...
- "软掩膜"和“硬掩膜”-智能IC卡
目录 一.“软掩膜”和“硬掩膜”... 2 二.EMV迁移进程... 3 三.PBOC规范和EMV规范对比... 3 四.总结... 5 五.关于SDA和DDA. 6 一.“软掩膜”和“硬掩膜” “软 ...
- word 软换行与硬换行
word 下的软回车,就是按住 Shift+Enter 之后产生的一种效果,通常在文字后面会有一个向下的箭头: 硬回车就是只敲击回车(enter)产生的一种效果了,通常就会在文字后面产生一个向左弯区的 ...
随机推荐
- BZOJ1022
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2701 Solved: 1721[Submit] ...
- thymeleaf抛出项目上下文ServletContext ,session,request等信息
@RequestMapping("/alls") public String allsinfo(HttpSession session, HttpServletRequest re ...
- JavaScript实现树深度优先和广度优先遍历搜索
1.前置条件 我们提前构建一棵树,类型为 Tree ,其节点类型为 Note.这里我们不进行过多的实现,简单描述下 Note 的结构: class Node{ constructor(data){ t ...
- 战略威慑 51nod提高组试题
AC通道 题目背景 马奥雷利亚诺布恩迪亚上校发动了他的第三十二次战争,让我们祝他好运. 题目描述 马孔多附近有n个城市, 有n-1条双向道路连通这些城市.上校想通过摧毁两条公路的方式对当局予以威慑.但 ...
- [Objective-C] 005_Category(类别)
Category的实际作用就是为已有的类来添加方法.为现有的类添加的方法可以先不用实现,在需要的时候再实现也是可以的.在我们的实际代码中如何来实现Category的呢?我们上篇的Person 类为例. ...
- Mysql索引的基本知识和用处
2020-05-29 15:38:27 一.索引的优点 1.能大大减少服务器需要扫描的数据量. 2.帮助服务器避免排序和临时表. 3.将随机io变成顺序io. 二.索引的用处 能够快速匹配where条 ...
- SSI PAYLOAD
<pre><!--#exec cmd="ls" --></pre><pre><!--#echo var="DATE_ ...
- Rocket - diplomacy - LazyModuleImpLike
https://mp.weixin.qq.com/s/gDbUto1qd7uWbpnxovr5pg 介绍LazyModuleImpLike类的实现. 1. wrapper LazyMo ...
- 【asp.net core 系列】3 视图以及视图与控制器
0.前言 在之前的几篇中,我们大概介绍了如何创建一个asp.net core mvc项目以及http请求如何被路由转交给对应的执行单元.这一篇我们将介绍一下控制器与视图直接的关系. 1. 视图 这里的 ...
- 蒲公英 · JELLY技术周刊 Vol.09 StackOverflow - 2020 开发者年度报告
登高远眺 沧海拾遗,积跬步以至千里 基础技术 StackOverFlow 2020 年开发者报告 技术问答社区 StackOverFlow 的年度报告,本次报告统计了来自于全球各地共 65000 名开 ...