Ответ 1
Я нашел ответ:)
Используйте JsonPath или XmlPath (если у вас есть XML), чтобы получать данные из тело реакции.
В моем случае:
JsonPath jsonPath = new JsonPath(responseBody);
int user_id = jsonPath.getInt("user_id");
Я получаю ответ таким образом:
Response response = expect().statusCode(200).given().body(requestBody).contentType("application/json")
.when().post("/admin");
String responseBody = response.getBody().asString();
У меня есть json в ответеBody:
{"user_id":39}
Могу ли я извлечь строку, используя метод rest-secure, только это value = 39?
Я нашел ответ:)
Используйте JsonPath или XmlPath (если у вас есть XML), чтобы получать данные из тело реакции.
В моем случае:
JsonPath jsonPath = new JsonPath(responseBody);
int user_id = jsonPath.getInt("user_id");
Вы также можете сделать это, если вас интересует только извлечение "user_id":
String userId =
given().
contentType("application/json").
body(requestBody).
when().
post("/admin").
then().
statusCode(200).
extract().
path("user_id");
В простейшей форме это выглядит так:
String userId = get("/person").path("person.userId");
Существует несколько способов. Я лично использую следующие:
извлечение единственного значения:
String user_Id =
given().
when().
then().
extract().
path("user_id");
работайте со всем ответом, когда вам нужно больше одного:
Response response =
given().
when().
then().
extract().
response();
String userId = response.path("user_id");
извлеките один, используя JsonPath, чтобы получить правильный тип:
long userId =
given().
when().
then().
extract().
jsonPath().getLong("user_id");
Последний действительно полезен, если вы хотите сопоставить его с типом i.e.
assertThat(
when().
then().
extract().
jsonPath().getLong("user_id"), equalTo(USER_ID)
);
Документация с остальными документами достаточно описательная и полная. Есть много способов добиться того, что вы спрашиваете: https://github.com/jayway/rest-assured/wiki/Usage
Чтобы сериализовать ответ в классе, определите целевой класс
public class Result {
public Long user_id;
}
И ответьте на него:
Response response = given().body(requestBody).when().post("/admin");
Result result = response.as(Result.class);
У вас должен быть Jackson или Gson в пути к классам, поскольку в документации указано: http://rest-assured.googlecode.com/svn/tags/2.3.1/apidocs/com/jayway/restassured/response/ResponseBodyExtractionOptions.html#as(java.lang.Class)