前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用TestNG中HardAssert和SoftAssert断言

使用TestNG中HardAssert和SoftAssert断言

作者头像
桑鱼
发布2020-04-23 16:45:19
1.1K0
发布2020-04-23 16:45:19
举报
一个接口测试的常见流程:

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

Assert 类

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

  1. Assert.assertTrue(condition, message)

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

代码语言:javascript
复制
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
复制
/**
 * 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
复制
@Test
public void test04() {
    Assert.assertEquals("ABc", "ABC", "\"ABc\" \"ABC\"not equals");
}
  1. assertEqualsNoOrder(Object[] actual, Object[] expected)

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

代码语言:javascript
复制
@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
复制
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一个接口测试的常见流程:
  • Assert 类
  • SoftAssert 类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档