如何使用 Rest Assured 概念在控制台中显示 Json Array Response 正文

Posted

技术标签:

【中文标题】如何使用 Rest Assured 概念在控制台中显示 Json Array Response 正文【英文标题】:How to Display Json Array Response body in console using Rest Assured concept 【发布时间】:2020-10-04 02:34:36 【问题描述】:
[
    
        "bookId": 8,
        "bookName": "social",
        "authorId": 7,
        "authorName": "Ram",
        "publisherId": 6,
        "publisherName": "potho",
        "genre": "nature",
        "price": 1000,
        "numberOfPages": 1000
    
]

上面的响应体,我想用放心的概念在控制台中显示。 请告诉我代码

【问题讨论】:

这能回答你的问题吗? how to see actual body sent from restassured。还有这个***.com/questions/44351824/… 【参考方案1】:
    创建一个调用 api 的方法(在 given() 部分定义前置条件,在 when() 部分定义端点)。 不要在此方法中包含断言。 保存响应变量(响应类型)。 添加行以在控制台上打印 api 响应正文。

请找到示例代码:Response response = given() .log().all() .headers(标题) .when() .get("https://www.your_endpoint.com/new"); System.out.println("API 响应体 = " + response.getBody().asString());

注意:日志记录通常优于打印到控制台。 尝试使用 log4j 记录并将“System.out.println”替换为“logger.info”

【讨论】:

【参考方案2】:

对于这种类型的响应,您可以简单地在响应主体周围添加花括号并添加一个参数,例如responseStr 在下面的示例中,然后您可以将该字符串转换为正确的 Json 响应,然后将其用作 我在下面的代码块中给出的数组:

response = "\"responseStr\":"+response+"";
            System.out.println("Response :"+response);
            JSONObject jsonObject = new JSONObject(response);
            JSONArray jsonArray = (JSONArray)jsonObject.get("responseStr");
            
            for(int i=0;i<jsonArray.length();i++) 
                JSONObject jsonObject1 = (JSONObject)jsonArray.getJSONObject(i);
          ```

【讨论】:

以上是关于如何使用 Rest Assured 概念在控制台中显示 Json Array Response 正文的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Rest Assured 在 Json 中构造空数组列表

如何使用 Rest Assured 在 GET url 中传递查询字符串参数?

Rest-Assured 测试框架

Rest Assured 不使用自定义 ObjectMapper

使用 REST Assured 进行测试时出现 java.lang.AbstractMethodError

在 REST Assured 中,将响应映射到对象时如何解决 UnrecognizedPropertyException?