专栏首页测试人生TestNg中的断言你真的了解吗

TestNg中的断言你真的了解吗

关注测试局| 会上瘾

前言

在执行自动化测试脚本的时候,我们需要自动判断测试脚本执行完成后的实际结果是否与预期结果一致,这个时候就需要在程序运行之前写入断言,判断当前程序执行后是否正常。

关于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()方法。

关于测试技术你或许还想看: 用jQuery做自动化测试是怎样一种感觉

我的测试用例是这样写的

请问,软件测试中,购物车的测试点有哪些?

刚做测试工作一年的时候,我是怎样的?

还有一件重要的事情要和大家说,我不是经常看公众号后台,所以有时候大家在后台发留言,时间一旦超过2天,我就没有回复权限了。所以,我要公布自己的微信号了,欢迎大家来埋伏我?

本文分享自微信公众号 - 软件测试君(backlight2018),作者:糖小幽

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何使用Postman生成不同格式测试的报告

    Postman团队开源Newman作为Postman运营工具,该开源库使用命令行方式执行Postman 脚本,并且生成多种格式报告,还支持Postman SDK...

    软件测试君
  • Pytest学习(二) - 断言的使用

    学习pytest时,总会习惯性的和unittest对比使用,自然就断言pytest和unittest也是有些区别的。

    软件测试君
  • unittest批量组织依赖用例(一)

    对于接口自动化,设计上的难点有:如何保证测试脚本的可复用性,以及脚本正确性。个人认为脚本的正确性是基于脚本的可复用性而言的,因为只有可复用性高使用频率大,才会慢...

    软件测试君
  • JMeter专题系列(五)检查点

    检查点:我们对用户名和密码进行了参数化,那么怎样来判断jmeter有没有正确调用t.dat里面的文件呢。当然,我们可以从结果图表中查看。但我还是想在“登录”这个...

    流柯
  • Jmeter(二十一) - 从入门到精通 - JMeter断言 - 上篇(详解教程)

      最近由于宏哥在搭建自己的个人博客可能更新的有点慢。断言组件用来对服务器的响应数据做验证,常用的断言是响应断言,其支持正则表达式。虽然我们的通过响应断言能够完...

    北京-宏哥
  • soapUI 接口测试断言

    断言的功能不言而喻, 是指定的restful api是否正常,判断它的响应值是否符合预期标准.

    louiezhou001
  • Jmeter系列(18)- 断言Assertions 的入门介绍

    https://www.cnblogs.com/poloyy/category/1746599.html

    小菠萝测试笔记
  • 走进Java接口测试之流式断言库AssertJ

    在设计自动化接口 Cases 时,遵守的核心原则是3A(Arrange-> Actor ->Assert)原则;

    高楼Zee
  • 性能测试-Jmeter断言(Assertion)

    使用断言的目的:用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致。在request的返回层面增加一层判断机制;因为requ...

    用户6367961
  • JMeter断言07

    前言 在jmeter中断言用于验证服务器返回的数据是否满足我们的要求。 jmeter提供了以下断言类型: ? 下面我们主要对响应断言、XPath Asserti...

    苦叶子

扫码关注云+社区

领取腾讯云代金券