测试相关

单元测试框架系列教程8-TestNg中的Assertion

本篇来介绍TestNG中的Assertion,也是断言。前面介绍了@Test注释下大部分的属性的功能和基本使用。这篇介绍,写测试用例中的断言部分。我们知道,一个测试用例的水平高低,主要是看断言的水平。断言能体现出测试的思维和测试角度,所以断言是测试中最难写的部分,自动化测试用例最难的也是在断言。举例一个接口测试的常见流程1) 发送接口请求2) 断言接口响应状态是不是 

本篇来介绍TestNG中的Assertion,也是断言。前面介绍了@Test注释下大部分的属性的功能和基本使用。这篇介绍,写测试用例中的断言部分。我们知道,一个测试用例的水平高低,主要是看断言的水平。断言能体现出测试的思维和测试角度,所以断言是测试中最难写的部分,自动化测试用例最难的也是在断言。

举例一个接口测试的常见流程

1) 发送接口请求

2) 断言接口响应状态是不是 200 OK

3) 断言接口的响应时间低于某一个值(看情况,不是必选)

4) 断言响应数据是否正确,一般的做法是判断某一个值是否相等或者包含关系

 基本上就是这么一个测试流程,其中4)部分的断言最难写。因为接口请求回来,会得到很多参数返回,一般是json数据,有些公司只能够对其中几个json字符串进行断言比较,有些能够通过两个json文件对比,一个是直接从数据库请求的json数据文件,一个是接口请求得到的json文件。下面,我们来看看TestNG给我们提供了哪些断言操作。TestNG中最常用的一个断言类是Assert.java,里面有多个静态方法,这个类我们习惯叫硬断言。对应的还有一个软断言的类,叫SoftAssert.java,这个类是需要创建实例对象,才能调用相关实例方法进行软断言。

1. Assert类(硬断言)

1) Assert.assertEquals(actual, expected)

TestNG中提供了多个33个assertEquals()方法,主要是匹配不同的数据类型和集合类操作。我们最常用的就是assertEquals(actual, expected)或者assertEquals(actual, expected,“message1”)

举例:

package testng;

import org.testng.Assert;
import org.testng.annotations.Test;

public class AssertionTest {

    @Test
    public void AssertTest(){

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

上面可以看出assertEquals(actual, expected,“message1”)中,如果现实结果和期待结果不相等,抛出断言异常并显示message1的内容,上面红圈就是我们填写的message1的内容。自动化测试一般喜欢带上这个message1,这样抛出错误,更能快速读懂错误的原因和错误的具体业务逻辑。

 

2) assertEqualsNoOrder((actual, expect)

判断两个对象是否相同,忽略排序位置。例如下面的两个字符串数组比较。

举例

package testng;

import org.testng.Assert;
import org.testng.annotations.Test;

public class AssertionTest {

    @Test
    public void AssertTest(){

        String[] st1 = {"Anthony", "Tom", "Jhon"};
        String[] st2 = {"Jhon", "Anthony", "Tom"};
        Assert.assertEqualsNoOrder(st1, st2, "两个字符串数组不相同");
    }
}

 

3) assertFalse(布尔条件,“message1”)

这里来一个断言为假的方法,断言

原创不易,完成人机校验,阅读全文

相关推荐