TestNG не завершает тестовый пример, даже если утверждение не выполняется

#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");