Como capturar el response cuando estamos trabajando con SerenityBDD, RestAssured y screenplay

Buenas lectores

Alguna vez te has preguntado como puedo imprimir en consola o ver la respuesta de una petición a un servicio cuando estamos usando screenplay?, normalmente en la documentación encontramos lo siguiente:


@Test

public void list_all_users() {

    Actor sam = Actor.named("Sam the supervisor")

                     .whoCan(CallAnApi.at(theRestApiBaseUrl));

    sam.attemptsTo(

            Get.resource("/users")

    );

    sam.should(

            seeThatResponse("all the expected users should be returned",

                    response -> response.statusCode(200)

                                        .body("data.first_name", hasItems("George", "Janet", "Emma")))

    );

}

Podemos observar que la misma estructura nos permite validar la calidad y veracidad de la información, sin embargo, llegan momentos en que deseamos tener registro de la respuesta sea por trazabilidad o porque nos entregó otro tipo de statusCode. Para eso simplementa vamos a recurrir a serenity:


Actor actor = Actor.named("Mimor ama y señora")

.whoCan(CallAnApi.at("https://dummy.restapiexample.com/api/v1"));

String employeeData = "{\"name\":\"A Carolina S\",\"salary\":\"10000000\",\"age\":\"32\"}";

actor.attemptsTo(

Post.to("/create")

.with(request -> request.contentType(ContentType.JSON).body(employeeData))

);

actor.should(

ResponseConsequence.seeThatResponse("Employee is created successfully",

response -> response.statusCode(200))

);

System.out.println("creado");

Response respo = SerenityRest.lastResponse();

System.out.println(respo.getBody().asPrettyString());

int id = respo.getBody().jsonPath().getInt("data.id");

System.out.println("ID extraído: " + id);

En el ejemplo anterior podemos observar que declaramos una variable del tipo Response y almacenamos el último Response que tiene serenity almacenado, es decir:

Response respo = SerenityRest.lastResponse();

System.out.println(respo.getBody().asPrettyString());


Con esto también podemos capturar algún valor en especial para trabajar con el:

int id = respo.getBody().jsonPath().getInt("data.id");

System.out.println("ID extraído: " + id);


Cordial Saludo.


Fuente:

https://serenity-bdd.github.io/docs/screenplay/screenplay_rest

Comentarios

Entradas populares de este blog

Tiempo de espera "muerto" explicito en Playwright

SerenityBDD - Almacenar valores en memoria (pasar información entre steps)

Subir mi proyecto local a Azure repos