如何在TestNG中用Rest Assured逐行格式化打印API响应
解决API响应单行打印问题
嘿,这个问题我之前也碰到过!你现在用body.asString()拿到的是服务器返回的原始字符串,很多API会把响应压缩成单行来减少传输体积,所以打印出来就是一团糟。要实现Postman那样的格式化输出,有几个简单的办法:
方法1:用RestAssured自带的格式化方法
从代码里的ResponseBody来看,你大概率用的是RestAssured框架,它本身就提供了现成的格式化工具,不用额外引入依赖:
直接打印格式化后的响应
response.getBody().prettyPrint();
这个方法会自动识别响应格式(JSON/XML都支持),直接输出带缩进、换行的结构化内容,和Postman里的效果几乎一样。
获取格式化后的字符串再自定义打印
如果你想保留自己的提示语(比如原来的"Response Body is: "),可以用asPrettyString():
String formattedResponseBody = response.getBody().asPrettyString(); System.out.println("Response Body is: " + formattedResponseBody);
方法2:用第三方JSON库手动格式化(适合非RestAssured场景)
如果你的项目里已经用到了Jackson或者Gson这类JSON处理库,也可以用它们来手动格式化字符串:
用Jackson实现
import com.fasterxml.jackson.databind.ObjectMapper; // 初始化ObjectMapper ObjectMapper objectMapper = new ObjectMapper(); // 拿到原始响应字符串 String rawBody = response.getBody().asString(); // 解析并格式化 String formattedBody = objectMapper.writerWithDefaultPrettyPrinter() .writeValueAsString(objectMapper.readTree(rawBody)); // 打印 System.out.println("Response Body is: " + formattedBody);
用Gson实现
import com.google.gson.Gson; import com.google.gson.GsonBuilder; // 初始化带格式化配置的Gson实例 Gson gson = new GsonBuilder().setPrettyPrinting().create(); // 拿到原始响应字符串 String rawBody = response.getBody().asString(); // 解析后再转成格式化字符串 Object jsonObject = gson.fromJson(rawBody, Object.class); String formattedBody = gson.toJson(jsonObject); // 打印 System.out.println("Response Body is: " + formattedBody);
这两种方法都能把单行的JSON字符串转换成带缩进、换行的结构化内容,和Postman的展示效果一致。
内容的提问来源于stack exchange,提问作者Bekind
相关产品推荐
相关产品推荐

