放心 - 重试请求如果失败
问题描述:
实施例试验:放心 - 重试请求如果失败
@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.我正在考虑if
或do-while
但我知道这不是很聪明的方式。任何人都可以建议一些解决方案!
换句话说 - 我要重试整个测试(或只是不用彷徨)如果的StatusCode = HTTP_OK
答
如果使用TestNG的,比你能实现自己的retryAnalyzer: http://toolsqa.com/selenium-webdriver/retry-failed-tests-testng/
在在其他框架的情况下,“不太聪明”的解决方案就是您的答案,赶上例外情况并再次尝试,直到退出标准匹配。
不幸的是RestAssured没有机制重试。
如果你想重试某些事情,循环是唯一的方法。简单的“不聪明”解决方案有什么问题? – Guy
由于statusCode = 500,我可以删除expect()以使其不会失败,并且在IF语句中检查此代码是/否不可见。但另一个问题是,responseBody不返回状态代码作为一个字符串,所以我不能只做一些像responseBody.contains(“500”)... – Michal