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

Свое сообщение для Rest-Assured(Hamcrest) assertThat

Теги: #<Tag:0x00007f0e6933fd00> #<Tag:0x00007f0e6933fc10> #<Tag:0x00007f0e6933fb20> #<Tag:0x00007f0e6933fa30> #<Tag:0x00007f0e6933f918> #<Tag:0x00007f0e6933f850>

Здравствуйте, коллеги, подскажите правильное решение:

Есть проект по тестированию API со следующим стеком: Maven - TestNG - RestAssured. В проекте есть необходимость проверять JSONы в запросах и в ответах на соответствие JSON Schema’ам, для этого использую стандартное от RestAssured/Hamcrest:

`
// request
assertThat(payloadJSON, matchesJsonSchemaInClasspath(“payload_JSON_Schema.json”));

// response

.assertThat()
.statusCode(200)
.contentType(ContentType.JSON)
.body(matchesJsonSchemaInClasspath(“response_JSON_Schema.json”))
`

Но, в случае если request или responce не соотвествует своей Schema, нужно выводить специальное сообщение об ошибке, т.е. если бы это был ассерт от TestNG или jUnit, то было бы так:

Assert.assertTrue( 1 == 2, "свое сообщение об ошибке");
но RestAssured не позволяет добовлять свое сообщени для assertThat (хотя такой фича реквест есть).

Собственно вопрос, как лучше сделать:

  • запускать assertThat в try/catch просто добавть свое сообщение в catch:
    } catch (Exception ex) { fail("[ERROR]: свое сообщение:" + ex.getMessage()); }

  • валидировать JSON Schema с помошью ассертов TestNG, как это лучше делать?

  • какой-нибудь другой вариант?

Если прямо таки нужно кастомное сообщение, я бы стал валидировать через tryCatch, это самый легкий способ. Всю валидацию сделает RestAssured, а вам только подкорректировать сообщение

1 симпатия

@Vladislav_Sobol, спасибо! Наверное это действительно самое простое решение.