Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用TestNG中HardAssert和SoftAssert断言

使用TestNG中HardAssert和SoftAssert断言

作者头像
桑鱼
发布于 2020-04-23 08:45:19
发布于 2020-04-23 08:45:19
1.2K00
代码可运行
举报
运行总次数:0
代码可运行
一个接口测试的常见流程:

第一步:发起请求 第二步:断言响应状态是否200,如果成功继续 第三步:断言响应时间是否符合标准(非必须) 第四步:断言响应数据是否正确,一般的做法是判断某个值是否相等或者包含关系。

Assert 类

断言是一个接口用例执行成功的关键,TestNG中最常用的一个断言类是Assert.java,里面包含很多个静态方法。

  1. Assert.assertTrue(condition, message)

如果condition为真,该断言运行通过,如果condition为假,抛出异常并打印message的信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.sangyu.test;

import org.testng.Assert;
import org.testng.annotations.Test;
 /**
  * == 比较的是内容地址
  * str1 和 str2 内存地址不同
  * str3 指向了 str1 所以它俩的内存地址是相同的
  */
public class Main {
   
    @Test
    public void test01() {
        String[] str1 = {"Hamilton", "Auston", "Marcia"};
        String[] str2 = {"Marcia", "Hamilton", "Auston"};
        String[] str3 = str1;
        Assert.assertTrue(str1 == str2, " str1 == str2 两者不相同");
    }

    @Test
    public void test02() {
        String[] str1 = {"Hamilton", "Auston", "Marcia"};
        String[] str2 = {"Marcia", "Hamilton", "Auston"};
        String[] str3 = str1;
        Assert.assertTrue(str1 == str3, " str1 == str3 两者不相同");
    }
}

与assertTrue()相对应的是assertFalse(condition, message)方法,如果condition结果为false,则断言成功,condition为true,断言失败并打印message信息

  1. Assert.assertEquals(actual, expected)

TestNG的assertEquals()方法提供了超过30多种的重载方法,这些方法支持不同的数据类型和集合类操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * Assert.assertEquals(str1, str2);
 * 在比较数组的时候,比较的是数组的长度以及数组下标对应的值是否相等的
 * 在比较字符串时候,区分大小写
 */
@Test
public void test03() {
    String[] str1 = {"Hamilton", "Auston", "Marcia"};
    String[] str2 = {"Hamilton", "Auston", "Marcia"};

    Assert.assertEquals(12, 12);
    Assert.assertEquals("AA", "AA");
    Assert.assertEquals(str1, str2);
    Assert.assertEquals("ABc", "ABC", "not equals");
}

Assert.assertEquals(actual, expected, message)。actual与expected比较结果如果不相等,抛出断言异常并显示message的信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
public void test04() {
    Assert.assertEquals("ABc", "ABC", "\"ABc\" \"ABC\"not equals");
}
  1. assertEqualsNoOrder(Object[] actual, Object[] expected)

判断两个数组是否相同,忽略排序位置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
public void test05() {
    String[] str1 = {"Hamilton", "Auston", "Marcia"};
    String[] str2 = {"Marcia", "Hamilton", "Auston"};
    Assert.assertEqualsNoOrder(str1, str2, "两个字符串数组不相同");
}

与 Assert.assertEquals 相反的是Assert.assertNotEquals(actual, expected, message),actual 与 expected 不相等的话则断言成功,相等的话断言失败并抛出断言异常并显示message的信息

  1. assertNotNull(object, “message”)

对象非空判断,断言对象不为空,否则,抛出异常,打印message1的内容。

  1. assertSame(actual, expect, “message”)

断言两个对象相同,这里相同和上面的Equals不同,Equals是值比较,而Same是内存地址比较

与assertSame(actual, expect, “message”)相反的是assertNotSame(actual, expect, “message”),断言两个对象内存地址不相同

SoftAssert 类

在 Assert.java 也称为硬断言。硬断言就是,如果运行到这行断言失败,即使该用例,后面还有其他代码行,也不会继续执行下去。SoftAssert 可以解决这个问题。

SoftAssert 的特点: 1)一个用例有多个断言,失败了其中一个,不影响其他断言的运行 2)在该用例的最后一个断言调用assertAll()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;
 
public class AssertTestDemo {
    @Test
    public void testSoftAssert(){
        System.out.println("Test start");
        SoftAssert assertion = new SoftAssert();
        assertion.assertEquals(12, 13,"两者不相等");
        System.out.println("Test complete");
        System.out.println(3+8);
        assertion.assertAll();
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Junit 4 Tutorials(Junit 4 教程) 三、Junit4 断言方法
Junit 4 断言方法允许检查测试方法的期望结果值和真实返回值。Junit的org.junit.Assert类提供了各种断言方法来写junit测试。这些方法被用来检查方法的真实结果值和期望值。下列一些有用的断言方法列表:
亦山
2021/09/14
1K0
单元测试框架系列教程8-TestNg中的Assertion
本篇来介绍TestNG中的Assertion,也是断言。前面介绍了@Test注释下大部分的属性的功能和基本使用。这篇介绍,写测试用例中的断言部分。我们知道,一个测试用例的水平高低,主要是看断言的水平。断言能体现出测试的思维和测试角度,所以断言是测试中最难写的部分,自动化测试用例最难的也是在断言。
凯哥Java
2019/07/01
1.1K0
测试框架-TestNG-断言方法
在执行自动化测试用例的时候,我们需要自动判断用例执行完成后获得的输出值是否与预期值一致,这个时候就要用到断言方法。
wangmcn
2022/07/25
6320
测试框架-TestNG-断言方法
TestNG小技巧
TestNG是目前很流行的Java测试框架之一,作为Java技术栈的小伙伴,TestNG也是我们做单元、接口、UI自动化的常用技术(当然Junit5很不错),所以也是入门技术之一。
Criss@陈磊
2020/04/24
7060
Selenium2+python自动化56-unittest之断言(assert)
前言 在测试用例中,执行完测试用例后,最后一步是判断测试结果是pass还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)。 用unittest组件测试用例的时候,断言的方法还是很多的,下面介绍几种常用的断言方法:assertEqual、assertIn、assertTrue。 一、简单案例 1.下面写了4个case,其中第四个是执行失败的 # coding:utf-8 import unittest class Test(unittest.TestCase): de
上海-悠悠
2018/04/08
7420
Selenium2+python自动化56-unittest之断言(assert)
TestNg中的断言你真的了解吗
在执行自动化测试脚本的时候,我们需要自动判断测试脚本执行完成后的实际结果是否与预期结果一致,这个时候就需要在程序运行之前写入断言,判断当前程序执行后是否正常。
软件测试君
2019/08/02
2.2K0
TestNg中的断言你真的了解吗
Junit单元测试
JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。
共饮一杯无
2022/11/28
9830
Junit5系列-Junit5中Assertions断言类
junit5中的JUnit Jupiter提供了Assertions类来替代了junit4中的Assert类并且添加了一些新的方法,所以工作过程中完全可以使用Assertions代替Assert类。 其包名称为:org.junit.jupiter.api.Assertions Assertions中提供的方法都是静态方法,我们可以通过import静态资源进行使用,例如:
洋仔聊编程
2019/01/15
3.8K0
Java重要知识点(继承、多态、接口,异常,工具,测试)
当父类,和子类有Static时,先初始化Static,再初始化子类的Static,再初始化父类的其他成员变量->父类构造方法->子类其他成员变量->子类的构造方法。
小爷毛毛_卓寿杰
2019/02/13
7040
Java重要知识点(继承、多态、接口,异常,工具,测试)
TestNG参数化测试-@DataProvider
欲将沉醉换悲凉,清歌莫断肠。这混乱的尘世,究竟充斥了多少绝望和悲伤。你想去做一个勇敢的男子,为爱,为信仰,轰轰烈烈的奋斗一场。
louiezhou001
2020/02/14
1.1K0
AssertJ 断言框架笔记
https://github.com/joel-costigliola/assertj-core
林万程
2020/02/24
8320
Java 中常见的单元测试(一):JUnit 篇
写不好单元测试的情况有很多,很多时候我们也是被需求压着身不由己的就开始 “ 胡编乱写” 了。甚至有的时候我们都不知道这个项目可以运行多长时间,项目刚发布完就可能进入到另一个项目的开发周期中,周而复始,更没有时间写单元测试了。
双鬼带单
2021/12/06
8.1K0
Java 中常见的单元测试(一):JUnit 篇
忘了打印测试吧,JUnit 真香!
在计算机领域中,所谓测试,描述的是一种用来鉴定软件正确性、完整性和质量的过程。而软件测试又一般可以分为黑盒测试和白盒测试,两者的相关定义如下。
村雨遥
2023/05/30
5020
忘了打印测试吧,JUnit 真香!
Java自动化测试(web自动化测试框架 28)
http://120.78.128.25:8765/Admin/Index/login.html
zx钟
2020/09/14
2.5K0
SpringBoot学习笔记(二)——SpringBoot测试JUnit5、 SpringBoot 配置、Spring IoC与自动装配
Spring Test与JUnit等其他测试框架结合起来,提供了便捷高效的测试手段。而Spring Boot Test 是在Spring Test之上的再次封装,增加了切片测试,增强了mock能力。
张果
2022/05/09
4.3K0
SpringBoot学习笔记(二)——SpringBoot测试JUnit5、 SpringBoot 配置、Spring IoC与自动装配
Google Test(GTest)使用方法和源码解析——断言的使用方法和解析
        在之前博文的基础上,我们将介绍部分断言的使用,同时穿插一些源码。(转载请指明出于breaksoftware的csdn博客)
方亮
2019/01/16
5.7K0
Java单元测试——框架(三)——testNG
安装:https://www.cnblogs.com/xusweeter/p/6559196.html,将org.testng.eclipse.updatesite.zip 拷贝到%ECLIPSE_HOME%\dropins,建立TestNG Class
顾翔
2020/08/31
5170
Java单元测试——框架(三)——testNG
junit5中Assertions替代了Assert
最近基于Spring Boot2.x版本中的JUnit5进行单元测试,发现Assert类已经不存在了,在JUnit5中使用Assertions进行替代。而且Junit5不仅仅替代了这么一个类,还有其他大量的类被重新定义和替换,在使用的时候大家需要留意。
程序新视界
2020/03/18
1.7K0
GTest 总结_gtest单元测试
Google C++单元测试框架(简称Gtest),可在多个平台上使用(包括Linux, Mac OS X, Windows, Cygwin和Symbian),它提供了丰富的断言、致命和非致命失败判断,能进行值参数化测试、类型参数化测试、“死亡测试”。
全栈程序员站长
2022/11/11
2K0
GTest 总结_gtest单元测试
GTEST学习总结
https://blog.csdn.net/lm409/article/details/55049893 https://blog.csdn.net/liyuefeilong/article/details/50993607 https://blog.csdn.net/qq_26437925/article/details/56479841
全栈程序员站长
2022/11/11
7870
相关推荐
Junit 4 Tutorials(Junit 4 教程) 三、Junit4 断言方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验