t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как вывести в консоль ответ в формате JSON

rest-assured
Теги: #<Tag:0x00007f9c5ce269e0>

(Igor Zip) #1

Подскажите пожалуйста! Пишу API тест на java. GET: https://jsonplaceholder.typicode.com/posts/100/ .Должен вернуть
{
“userid”:10,
“id”: 100,
“title”: “dgdgd”
. . .
}

Как вывести в консоль? Сделал следуещее:
@Test
public void getRequest() {

String response;
response =
given()
.baseUri(“https://jsonplaceholder.typicode.com”)
.basePath("/posts/100")
.header(“Content-Type”, “application/json”)
.when().get()
.then().extract()
.response()
.toString();

System.out.println(response);
}


(Igor Zip) #2

@Test
public void getRequest() {

RestAssured.given()
.baseUri(“https://jsonplaceholder.typicode.com”)
.basePath("/posts/100")
.header(“Content-Type”, “application/json”)
.when().get()
.then()
.statusCode(200)
.body(“userId”, Matchers.equalTo(10))
.body(“id”, Matchers.equalTo(100))
.body(“title”, Matchers.equalTo(“at nam consequatur ea labore ea harum”))
.body(“body”, Matchers.equalTo("cupiditate quo est a modi nesciunt soluta\nipsa voluptas error itaque dicta " +
“in\nautem qui minus magnam et distinctio eum\naccusamus ratione error aut”))
.extract()
.response()
.prettyPrint();
}


(Igor Zip) #3

но как проверить текст в body, там где слеши встречаются? Как здесь использовать JSON схему


(Valentin G ) #4

Не уверен, точно, что поможет, но попробуй превратить полученный респонс в обьект, класса Post (который содержит поля - userId, id, title, body). С ним легче работать, на мой взгляд.


(Roy Obenon) #5

(Vatslau) #6
String text = readFileAsString("textfile.txt");
text.replace("\n", "");

KISS


(Igor Zip) #7

Делаю так:

ReadContext context = JsonPath.parse(response);

List<Integer> listOfUserId = context.read("$.userId");

но выдает ошибку class java.lang.Integer cannot be cast to class java.util.List


(Valentin G ) #8

Потому что вы берете не список интерегеров а один определенный. Надо изменить
.basePath("/posts/100") на .basePath("/posts") чтобы получить все посты, тогда применять данную операцию.


(Ivan V) #9

Если нужно просто вывести в консоль
.when().get()
.body().prettyPrint()

Еще удобно использовать фильтры, если вы хотите таким образом логгирование запилить
given()
.filter(new RequestLoggingFilter())
.filter(new ResponseLoggingFilter());