放心 - 重试请求如果失败

放心 - 重试请求如果失败

问题描述:

实施例试验:放心 - 重试请求如果失败

@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错误。这是因为应用程序错误,它的应用程序故障,所以我想补充温度。解决方法重试.get如果服务返回500.我正在考虑ifdo-while但我知道这不是很聪明的方式。任何人都可以建议一些解决方案!

换句话说 - 我要重试整个测试(或只是不用彷徨)如果的StatusCode = HTTP_OK

+0

如果你想重试某些事情,循环是唯一的方法。简单的“不聪明”解决方案有什么问题? – Guy

+0

由于statusCode = 500,我可以删除expect()以使其不会失败,并且在IF语句中检查此代码是/否不可见。但另一个问题是,responseBody不返回状态代码作为一个字符串,所以我不能只做一些像responseBody.contains(“500”)... – Michal

如果使用TestNG的,比你能实现自己的retryAnalyzer: http://toolsqa.com/selenium-webdriver/retry-failed-tests-testng/

在在其他框架的情况下,“不太聪明”的解决方案就是您的答案,赶上例外情况并再次尝试,直到退出标准匹配。

不幸的是RestAssured没有机制重试。