Rest-Assured

Rest-Assured 

专门用于测试restful api

结构是given-when-then

导入的hamcrest与then有关-->跟匹配相关就和junit里断言很像


示例

import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;//hamcrest很关键下面这些都是用这个
//其实验证的是https://api.github.com/users/{user} 且{user}的值为octocat,通过路径参数传入
public class GitHubApiTest {
    //测试用户查询接口
    @Test//这里用的为Junite5
    public void testGetUser() {
        // 设置基础URL
        RestAssured.baseURI = "https://api.github.com";
       // 发送GET请求并验证响应
        given()
            .pathParam("user", "octocat")  // 路径参数
        .when()
            .get("/users/{user}")          // 发送请求
            //成功返回状态码200
            /*
            json字段验证:login值为octocat,id字段>0,公共仓库public_repos>=0
            响应头验证头:看类型是否为json
            
            */
        .then()
            .statusCode(200)               // 验证状态码
            //这些匹配用的是hamcrest的写法:
            .body("login", equalTo("octocat"))  // 验证JSON字段
            .body("id", greaterThan(0))
            .body("public_repos", greaterThanOrEqualTo(0))
            .header("Content-Type", containsString("application/json"));  // 验证响头}
        //测试查询仓库接口
         @Test
    public void testSearchRepositories() {
        given()
            //查询参数
            .queryParam("q", "java")  //java仓库
            .queryParam("sort", "stars")//按星标数查询
            .queryParam("order", "desc")//降序
        .when()//查询仓库
            .get("/search/repositories")
        .then()
            .statusCode(200)//成功返回状态码200
            .body("total_count", greaterThan(100000))  // 验证总数
            .body("items.name", hasItems("spring-boot", "guava"));  // 验证结果包含特定项目}}

restassured与junit结合的集成测试

JUnit 5 示例
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class UserApiTest {
    @BeforeAll
    static void setup() {
        baseURI = "http://localhost:8080/api";}
   @Test
    void testCreateUser() {
        given()
            .contentType("application/json")
//请求体
            .body("{\"name\":\"test\",\"email\":\"test@example.com\"}")
        .when()
            .post("/users")
        .then()
            .statusCode(201)
            .body(“id”, notNullValue())//响应体
            .body("name", equalTo("test"));}}

 

posted @ 2025-05-17 15:23  Annaprincess  阅读(26)  评论(0)    收藏  举报