Они оба, кажется, эффективно делают одно и то же. Я возился с этим и использовал разные значения, и я правильно получал «прошел / не прошел» для обоих.
@Test
public static void test_get(){
RequestSpecification rqs = new RequestSpecBuilder()
.setBaseUri("http://localhost:8080")
.setBasePath("/app/")
.build();
ResponseSpecification rss = new ResponseSpecBuilder()
.expectStatusCode(200)
.build();
Response response = given(rqs, rss).request("GET", "videogames");
}
против
@Test
public static void test_get(){
RequestSpecification rqs = new RequestSpecBuilder()
.setBaseUri("http://localhost:8080")
.setBasePath("/app/")
.build();
Response response = given(rqs).request("GET", "videogames");
assertEquals(response.getStatusCode(), 200);
}
Между ними есть несколько различий, которые становятся более очевидными, когда вы какое-то время работаете со встроенными утверждениями Rest Assured.
Нужно быстро и четко проверить тело ответа? Для этого есть матчеры Hamcrest.
Хранение запроса и его утверждений вместе в одной большой цепочке методов также помогает организовать ваш код и упрощает чтение запросов.
Rest Assured позволяет вам размещать свои тесты следующим образом:
RestAssured.given().contentType(ContentType.JSON)
.when().get(endpoint)
.then().body("firstname",containsString("Mark"));
Это позволяет очень четко читать весь жизненный цикл запроса и утверждения. Сделайте запрос, сделайте утверждения. Вероятность путаницы в том, что происходит, невелика.
Если вы используете Rest Assured, на мой взгляд, вы должны использовать его способ утверждения. Это инструмент, специализирующийся на работе с запросами и ответами API, чего не может сделать что-то вроде TestNG.
Фрагмент кода взят из: [https://qaautomation.expert/2021/06/14/assertion-of-json-in-rest-assured-using-hamcrest][1]