2016-01-21 1 views
2

Пример испытания:уверяем - повторить запрос, если не удалось

@Test 
public void shouldGetRoutesList() { 
    Response response = 
      given() 
        .headers("RequestId", 10) 
        .headers("Authorization", accessToken) 
        .contentType(ContentType.JSON). 
      expect() 
        .statusCode(HttpURLConnection.HTTP_OK). 
      when() 
        .get("address"); 
    String responseBody = response.getBody().asString(); 
    System.out.println(responseBody); 
    logger.info("Log message"); 
} 

Дело в том, что иногда ответ от службы равна 500 об ошибке. Это из-за ошибки приложения, и это ошибка приложения, поэтому я хотел бы добавить temp. обходной путь для повторного ответа .get, если сервис возвращается 500. Я думал о if или do-while, но я знаю, что это не очень умно. Кто-нибудь может посоветовать какое-то решение? !

Другими словами - я хочу повторить весь тест (или просто .get), если StatusCode = HTTP_OK

+0

Если вы хотите повторить что-то, это ваш единственный путь. И что не так с простым «не умным» решением? – Guy

+0

Я могу удалить expect(), чтобы не пропустить тест из-за statusCode = 500 и в инструкции IF проверить, что этот код/​​или не отображается. Но другая проблема заключается в том, что responseBody не возвращает код состояния как String, поэтому я не могу просто сделать что-то вроде responseBody.contains («500») ... – Michal

ответ

0

Если вы используете TestNG, чем вы можете реализовать свой собственный retryAnalyzer: http://toolsqa.com/selenium-webdriver/retry-failed-tests-testng/

В В случае других фреймворков «не очень умные» решения являются вашими ответами, поймайте исключение и повторите попытку до тех пор, пока не будут выбраны критерии выхода.

К сожалению, RestAssured не имеет механизма для повторной попытки.

Смежные вопросы