如何在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");

最新更新