Repos assuré. Est-il possible d'extraire de la valeur de requête json?
je reçois la réponse de cette façon:
Response response = expect().statusCode(200).given().body(requestBody).contentType("application/json")
.when().post("/admin");
String responseBody = response.getBody().asString();
j'ai un json en charge:
{"user_id":39}
puis-je extraire à la chaîne en utilisant la méthode de rest-assured seulement cette valeur = 39?
5 réponses
vous pouvez aussi faire comme ceci si vous êtes seulement intéressé à extraire le "user_id":
String userId =
given().
contentType("application/json").
body(requestBody).
when().
post("/admin").
then().
statusCode(200).
extract().
path("user_id");
Dans sa forme la plus simple, il ressemble à ceci:
String userId = get("/person").path("person.userId");
Il y a plusieurs façons. Personnellement, j'utilise les suivantes:
extraction d'une seule valeur:
String user_Id =
given().
when().
then().
extract().
path("user_id");
travailler avec l'ensemble de la réponse lorsque vous en avez besoin de plus d'un:
Response response =
given().
when().
then().
extract().
response();
String userId = response.path("user_id");
en extraire un en utilisant le JsonPath pour obtenir le bon type:
long userId =
given().
when().
then().
extract().
jsonPath().getLong("user_id");
le dernier est vraiment utile quand vous voulez faire correspondre la valeur et le type i.e.
assertThat(
when().
then().
extract().
jsonPath().getLong("user_id"), equalTo(USER_ID)
);
Le reste est assuré documentation est assez descriptif et complet. Il y a beaucoup de des moyens pour obtenir ce que vous demandez: https://github.com/jayway/rest-assured/wiki/Usage
Pour sérialiser la réponse dans une classe, définir la classe cible
public class Result {
public Long user_id;
}
Et la carte de réponse:
Response response = given().body(requestBody).when().post("/admin");
Result result = response.as(Result.class);
vous devez avoir Jackson ou Gson dans le classpath car la documentation stipule: http://rest-assured.googlecode.com/svn/tags/2.3.1/apidocs/com/jayway/restassured/response/ResponseBodyExtractionOptions.html#as(java.lang.Class)
JsonPath jsonPathEvaluator = response.jsonPath();
return jsonPathEvaluator.get("user_id").toString();