霍格沃兹测试开发

接口测试断言

霍格沃兹测试开发学社 ceshiren.com

目录

  • 接口断言使用场景
  • 响应结果类型
  • 响应结果断言

接口断言使用场景

  • 问题:
      1. 如何确保请求可以发送成功
      1. 如何保证符合业务需求
  • 解决方案:
    • 响应断言

响应结果类型

类型 断言方法 含义
状态码 statusCode() 响应状态码
响应头 header() 响应头信息
内容 body() 内容完全匹配

简单断言: 响应状态码

  • statusCode()
import static io.restassured.RestAssured.given;
import org.junit.jupiter.api.Test;

public class TestAssertionStatusCode {
    @Test
    void testStatusCode(){
        given()
        .when()
                .get("https://httpbin.ceshiren.com/get")  // 发起GET请求
        .then()
                .log().all()  // 打印响应结果
                .statusCode(200);  // 响应状态码断言
    }

}

简单断言: 响应体

  • body()
import org.junit.jupiter.api.Test;

import static io.restassured.RestAssured.given;
import static org.hamcrest.core.IsEqual.equalTo;

public class TestAssertionBody {
    @Test
    void testBody(){
        given()
        .when()
            .get("https://httpbin.ceshiren.com/get")  // 发起GET请求
        .then()
            .log().all()  // 打印响应结果
            .body("origin", equalTo("113.89.246.184"));  // 响应体断言
    }
}

复杂断言

  • 若碰到复杂断言应该如何处理?
    • jsonpath
    • jsonschema
    • 自行编写解析算法

附录:Hamcrest 依赖配置

  • pom.xml中添加配置信息
<dependency>
  <groupId>org.hamcrest</groupId>
  <artifactId>hamcrest-core</artifactId>
  <version>1.3</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.hamcrest</groupId>
  <artifactId>hamcrest-library</artifactId>
  <version>1.3</version>
  <scope>test</scope>
</dependency>