测试示例:
@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 错误。这是因为应用程序错误,并且是应用程序错误,所以我想添加临时值。如果服务返回 500,则重试
.get
的解决方法。我正在考虑 if
或 do-while
但我知道这不是很聪明的方法。有人可以建议一些解决方案吗?
换句话说 - 如果 statusCode=!HTTP_OK
我想重试整个测试(或只是 .get)如果您使用 TestNG,那么您可以实现自己的 retryAnalyzer: http://toolsqa.com/selenium-webdriver/retry-failed-tests-testng/
对于其他框架,“不是很聪明”的解决方案就是您的答案,捕获异常并重试,直到退出标准匹配。
不幸的是,RestAssured 没有重试机制。
您还可以使用 SpringRetry 库和 RetryTemplate 类。
查看 Dev.Failsafe 库。他们有一个 RetryPolicy 类,可以与 RestAssured 配合使用。这个视频很好地涵盖了这一点: https://www.youtube.com/watch?v=MwY4VP3lQ7I