放心 - 如果失败则重试请求

问题描述 投票:0回答:3

测试示例:

@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)
java selenium-webdriver testng rest-assured
3个回答
0
投票

如果您使用 TestNG,那么您可以实现自己的 retryAnalyzer: http://toolsqa.com/selenium-webdriver/retry-failed-tests-testng/

对于其他框架,“不是很聪明”的解决方案就是您的答案,捕获异常并重试,直到退出标准匹配。

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


0
投票

您还可以使用 SpringRetry 库和 RetryTemplate 类。


0
投票

查看 Dev.Failsafe 库。他们有一个 RetryPolicy 类,可以与 RestAssured 配合使用。这个视频很好地涵盖了这一点: https://www.youtube.com/watch?v=MwY4VP3lQ7I

© www.soinside.com 2019 - 2024. All rights reserved.