#java #rest #testng #rest-assured #assertion
#java #отдых #testng #будьте уверены #утверждение
Вопрос:
@Test
public void getProfile() {
RestAssured.baseURI = URL.baseURL;
Response res = given().header(URL.contentType,
URL.cookieType).when().get(URL.getURL).then().assertThat().
statusCode(200).and().extract().response();
String data = res.asString();
System.out.println(data);
}
Ниже приведен результат тестового запуска:
{"status_code":401,"message":"Authentication failed."}
TestNG теперь помечает этот случай как PASS, даже если ответ не соответствует ожидаемому. Как я могу заставить это работать? Я хочу выполнить только утверждение assertThat.
Комментарии:
1. Это недостаточная информация, мы не можем видеть, что на самом деле произошло, и не можем определить, в чем проблема. Можете ли вы добавить захват HTTP-трафика? Вы прошли через код в отладчике? Попробуйте разделить длинный набор связанных вызовов методов на отдельные строки и либо пошагово выполнить, либо распечатать отладочный вывод на каждом шаге, чтобы определить, что на самом деле происходит.
2. Ваш вывод показывает тело ответа, а не код состояния. Он может вернуть 200 OK и любое тело ответа. Проверьте res.StatusCode(). RestAssured выдает исключение, когда какое-то ожидание не удалось, и с вызванным исключением TestNG завершает тест
Ответ №1:
Вы должны сохранить результат теста в логическое или числовое значение.
Позже вы должны сравнить ожидаемый результат теста с фактическим результатом теста с помощью Assert:
Boolean testPassed = isTestPassed();
Assert.assertTrue("The test result is: " testPassed,testPassed);
Числовое сравнение:
long testValue = getTestResponseCode();
Assert.assertEquals("Actual test respoonse code is: " testValue,testValue);
Ответ №2:
Попробуйте любое из приведенных ниже.
given().contentType(ContentType.JSON).queryParam("text","lands").when().get("http://services.groupkt.com/country/search").then().assertThat().statusCode(200).log().all();
int actualStatusCode=given().contentType(ContentType.JSON).queryParam("page","2").when().get("https://reqres.in/api/users").statusCode();
Assert.assertEquals(200, actualStatusCode,"The status code mistatches");