java - 如何验证响应并从 Rest Assured 中的响应正文中提取值?
问题描述
我知道如何从响应正文中提取值以及如何从响应正文中验证字段,但问题是什么
void postRequest() {
Response id = given()
.auth()
.preemptive()
.basic(username,password)
.contentType(ContentType.JSON)
.body(----- some JSON body ------)
.when()
.post(baseurl+"postRequest")
.then()
.contentType(ContentType.JSON)
.extract()
.path("id")
;
}
有了这个,我可以提取我想要的值并将其保存到变量“id”中,并将其用于进一步的 API 请求。
response
.then()
.log().ifValidationFails(LogDetail.ALL, true) # I NEED TO PRINT REQUEST PARAMS TOO IF IT FAILS
.assertThat()
.statusCode(200)
;
如果我采用上述方法,我无法验证响应正文,因为我们没有将响应保存到变量中。
我想一口气做两个。此外,我也尝试了相反的方法,我首先验证了响应正文,但我无法保存“id”,因为我们无法将 ValidatableResponse 转换为 Response,反之亦然。除非请求失败,否则我不想打印请求参数。
帮我想办法解决这个问题。
解决方案
据我了解,您需要两者:在一个链命令中验证响应和提取值(对于其他 API)。这是示例:
int id = given().post()
.then()
.log().ifValidationFails()
.assertThat()
.contentType(ContentType.JSON)
.statusCode(200)
.body("id", equalTo("test"))
.extract()
.response()
.path("id");
推荐阅读
- python - Matplotlib 图挂在 threading.Thread.join() 被使用
- botframework - 如何从 Microsoft Teams Bot 获取用户数据一次
- ios - UIControl 在 UITableView Cell 内没有收到触摸
- python - Python Href 抓取
- shiny - 将服务器文件转换为 HTML
- excel - EXCEL连接两个边框之间的单元格中的所有文本
- arrays - PowerShell:将十六进制变量转换为单个(float32)大端变量
- python - 检查数据框中的多个字段(字符串字段和日期字段)
- api - 在地图上显示 3D 建筑物
- mysql - MySQL在查询不同的列时返回不同的结果