繁体   English   中英

使用REST保证在测试中重置连接

[英]Connection reset in test using REST-assured

我有一个使用REST保证的测试。 在这个测试中,当我将完整的主机和路径传递给get()方法时,一切都很顺利,测试通过。 但是,当我尝试使用RestAssured.baseURI和RestAssured.basePath时,就像本教程的这一部分所示: http//code.google.com/p/rest-assured/wiki/Usage#Default_values ,测试结束于Connection重启。 下面我粘贴工作版本和版本与baseURI不起作用,以及我得到的错误。 请帮助:>

工作版本:

import com.jayway.restassured.RestAssured;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import java.util.Iterator;

import static com.jayway.restassured.RestAssured.basic;
import static com.jayway.restassured.RestAssured.given;
import static org.hamcrest.Matchers.containsString;

public class SomeTest {

    @Test(dataProvider = "provideData")
    public void doSomeTest(String someParameter, String someExpectedValue) {

        given().
                auth().basic("login", "pass").
                param("someParameter", someParameter).
        when().
                get("http://some.host/some-base-path/some-path-relevant-in-test").
        then().
                statusCode(200).
                body("some json", containsString(someExpectedValue)).
                log().ifError();
    }

    @DataProvider(name = "provideData")
    public Iterator<Object[]> provideData() {

        //this provides data for test method in irrelevant way
    }

}

不工作的版本会导致连接重置:

import com.jayway.restassured.RestAssured;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import java.util.Iterator;

import static com.jayway.restassured.RestAssured.basic;
import static com.jayway.restassured.RestAssured.given;
import static org.hamcrest.Matchers.containsString;

public class SomeTest {

    @Test(dataProvider = "provideData")
        public void doSomeTest(String someParameter, String someExpectedValue) {

        RestAssured.baseURI = "http://some.host";
        RestAssured.basePath = "/some-base-path";

        given().
                auth().basic("login", "pass").
                param("someParameter", someParameter).
        when().
                get("/some-path-relevant-in-test").
        then().
                statusCode(200).
                body("some json", containsString(someExpectedValue)).
                log().ifError();
    }

    @DataProvider(name = "provideData")
    public Iterator<Object[]> provideData() {

        //this provides data for test method in irrelevant way
    }
}

错误:

mar 19, 2014 10:26:01 AM org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: I/O exception (java.net.SocketException) caught when processing request: Connection reset
mar 19, 2014 10:26:01 AM org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: Retrying request

我究竟做错了什么? :(

你在很短的时间内提出了很多要求吗? 您可以尝试在每个请求之后关闭空闲连接和/或为多个请求重用HTTP Client实例

它似乎是在2.8.1版本上修复的Restassured中的一个错误。 资源泄漏,连接未关闭。 请参阅https://github.com/rest-assured/rest-assured/issues/633

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM