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"));}}

浙公网安备 33010602011771号