有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何配置java重启库以不重用cookie

我尝试在testng api测试中重用restassured get调用,但使用从上一个响应中收到的cookie重新启动实例。 尝试重新启动。重置();但这无助于刷新我们从早期请求/响应中获得的cookie

出现此问题的原因-因为如果请求中存在会话cookie,get端点的行为会有所不同

@Test // TestNG test
public void test_1(){

    //Set Cookie
    Cookie cookie = new Cookie.Builder("COOKIENAME","COOKIEVALUE").setDomain("*.com").setPath("/").setExpiryDate(SOMELATERDATE).build();

    RestAssured.baseURI = https://ENV_URL;
    Response response = RestAssured.given().log().all()
        .cookies(new Cookies(cookie)).when().get("/END_POINT").then().extract().response().prettyPeek();

    RestAssured.reset();
}

@Test // TestNG test
public void test_2(){

    //Set Cookie
    Cookie cookie = new Cookie.Builder("COOKIENAME", "COOKIEVALUE").setDomain("*.com").setPath("/").setExpiryDate(SOMELATERDATE).build();

    RestAssured.baseURI = https://ENV_URL;
    // Still Reuses the cookie received from previous response
    Response response = RestAssured.given().log().all()
        .cookies(new Cookies(cookie)).when().get("/END_POINT").then().extract().response().prettyPeek();

    RestAssured.reset();
}

共 (1) 个答案

  1. # 1 楼答案

    使用Cookie过滤器。如果要排除特定cookie中的错误,可以使用以下代码

        @Test 
        public void sampletest(){
    
            CookieFilter cookieFilter = new CookieFilter(); 
            Response response = RestAssured.given().
             cookie("foo", "bar").
             filter(cookieFilter). // Reuse the same cookie filter
                          // if "foo" is stored in cookieFilter it won't be applied because it's already applied explicitly
     expect().
             statusCode(200).
     when().
             get("/y");
    
        }