You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java控制台打印RestAssured API状态码并传递给其他方法?

解决控制台打印状态码及传递给测试方法的方案

一、修改测试方法,保存响应并打印状态码

首先需要将API调用的响应保存为Response对象,这样才能提取状态码信息并传递给测试方法。修改后的测试代码如下:

@Test
public void getRequest() {
    // 保存API响应到Response对象
    Response response = given()
            .baseUri("https://api.publicapis.org/entries")
            .when()
            .get()
            .then()
            .extract()
            .response();

    // 获取状态码(数字格式)和完整状态行(如"200 OK")
    int statusCode = response.getStatusCode();
    String statusLine = response.getStatusLine();

    // 控制台打印状态码信息
    System.out.println("响应状态码:" + statusCode);
    System.out.println("完整响应状态:" + statusLine);

    // 将响应对象传递给检查方法,验证是否符合预期
    checkResponseCode(response, "200 OK");
}

二、调整工具方法,基于响应对象验证状态

原工具方法依赖未初始化的responseSpecification存在风险,改为直接接收Response对象,逻辑更可靠:

// 对外暴露的检查方法,接收响应对象和预期状态行
public static void checkResponseCode(Response response, String expectedStatusLine){
    ValidateResponse(response, expectedStatusLine);
}

// 核心验证逻辑
public static void ValidateResponse(Response response, String expectedStatusLine){
    String actualStatusLine = response.getStatusLine();
    // 拆分预期和实际状态行,提取描述部分
    String[] expectedParts = expectedStatusLine.split(" ", 2);
    String expectedDesc = expectedParts[1];
    
    String[] actualParts = actualStatusLine.split(" ", 2);
    String actualDesc = actualParts[1];

    switch (expectedStatusLine) {
        case "200 OK":
            Assert.assertEquals(expectedDesc, actualDesc, "请求失败:实际响应为" + actualStatusLine);
            break;
        case "404 Not Found":
            Assert.assertEquals(expectedDesc, actualDesc, "请求失败:实际响应为" + actualStatusLine);
            break;
        default:
            throw new IllegalArgumentException(expectedStatusLine + " 不在支持的状态选项中");
    }
}

关键说明

  • 保存响应对象:通过.extract().response()获取完整响应实例,这是获取状态码、响应体等信息的基础。
  • 状态码提取:getStatusCode()返回数字格式的状态码(如200),getStatusLine()返回包含状态码和描述的完整字符串(如"200 OK")。
  • 传递状态信息:直接将Response对象传入工具方法,避免静态变量带来的线程安全或未初始化问题,同时让验证逻辑更直观。

内容的提问来源于stack exchange,提问作者X-Man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:01:20