首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Restassured测试后端超时

使用Restassured测试后端超时
EN

Stack Overflow用户
提问于 2016-04-21 17:31:16
回答 2查看 6.1K关注 0票数 2

我正在使用RestAssured 2.4.1测试一个服务栈,它的第一个服务是通过REST公开的。

现在,我想测试后端没有响应时的行为,这是REST服务应该检测和处理的情况。不幸的是,RestAssured在REST服务检测到后端超时之前终止了POST请求。

如何增加RestAssured的相应超时时间?我正在尝试下面的方法,但没有成功

代码语言:javascript
复制
RestAssuredConfig config = RestAssured.config();
config.getHttpClientConfig()
            .setParam(ClientPNames.CONN_MANAGER_TIMEOUT, 0)  // HttpConnectionManager connection return time
            .setParam(CoreConnectionPNames.CONNECTION_TIMEOUT, 0) // Remote host connection time
            .setParam(CoreConnectionPNames.SO_TIMEOUT,  0) ; // Remote host response time

given()
    .config(config)
    . ...
EN

回答 2

Stack Overflow用户

发布于 2016-12-09 16:24:50

我使用的是RestAssured 3.0.1,但这就是我修复这个问题的方式--而且是全局的(我实际上想要降低默认超时)。我还使用了SystemDefaultHttpClient,因为我想重用连接(HTTP keepalive)。因此,它不适合100%,但可能会给出指针。

代码语言:javascript
复制
HttpClientConfig clientConfig = RestAssured.config().getHttpClientConfig();
clientConfig = clientConfig.httpClientFactory(new HttpClientConfig.HttpClientFactory() {
    @Override
    public HttpClient createHttpClient() {
        HttpClient rv =  new SystemDefaultHttpClient();
        HttpParams httpParams = rv.getParams();
        HttpConnectionParams.setConnectionTimeout(httpParams, 5 * 1000); //Wait 5s for a connection
        HttpConnectionParams.setSoTimeout(httpParams, 60 * 1000); // Default session is 60s
        return rv;
    }
});

//This is necessary to ensure, that the client is reused.
clientConfig = clientConfig.reuseHttpClientInstance();

RestAssured.config = RestAssured.config().httpClient(clientConfig);
票数 2
EN

Stack Overflow用户

发布于 2016-04-30 23:00:01

什么是超时?

如果您的测试使用的是org.junit.Test,那么您可以显式设置超时。以下命令将超时设置为60秒(60000毫秒):

代码语言:javascript
复制
@Test(timeout = 60000)
public void canCallFullyQualifiedUrlsWithoutPortDefined() throws Exception {
    // This test hangs forever unless it works
    get("http://filehost-semc-rss-dev.s3.amazonaws.com/testfile1.txt");
}

您可以从rest-assured获取实际响应时间:

代码语言:javascript
复制
@Test public void
response_time_can_be_extracted() {
    long time =
    given().
            param("firstName", "John").
            param("lastName", "Doe").
    when().
            get("/greet").
    then().
            extract().response().time();

    assertThat(time, greaterThan(0L));
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36765459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档