[英]How to maintain same session across multiple requests in rest-assured?
先決條件:使用 Java 進行放心的 api 測試
步驟1. 啟動 URL 並獲取登錄票- 下面的代碼片段獲取登錄票
RestAssured.baseURI = "https://ve4al10p:453";
RestAssured.useRelaxedHTTPSValidation();
Response res =
given().
header("Content-Type","application/json").
when().
post("/i/login?action=lt").
then().
assertThat().statusCode(200).
extract().response();
res.prettyPrint();
輸出:通知登錄票
lt":"LT-12370-j4znjFQkGMXMjlT3uKJ"
步驟 2. 使用登錄票並使用用戶名和密碼進行登錄。 我提取了登錄票並傳遞給下一個請求(續片段)。
CookieFilter cookieFilter = new CookieFilter();
Response res1 = given().
filter(cookieFilter).
header("Content-Type","application/json").
queryParam("lt",loginticket).
queryParam("username","user1").
queryParam("password","pass1").
when().
post("/i/login?service=https://ve4al10p:443/spa").
then().
assertThat().statusCode(200).
extract().response();
res1.prettyPrint();
輸出:注意它再次創建了一個新的登錄票,這意味着一個新的會話並沒有給出預期的輸出。
**"lt":"LT-12369-u6osMkesdg6RQu9JPoDARL4D"**
注意:我還注意到上述請求的會話,兩者都不同。
預期輸出:我想使用相同的登錄票並保持相同的會話。
您可以從登錄中獲取 SessionID/cookie,並將其作為 SessionID 傳遞給下一個請求作為標頭以維護單個會話。
例如:
String JsessionID = given().header(h1).body(payload).when().post(basepath).thenReturn().cookie("JSESSIONID");
given().headers(JsessionID).body(body).when().post();
用cookie發送請求怎么樣? 假設您在登錄成功后在 cookie 中獲得了 access_token,您可以在 cookie 中的 access_token 內發送請求:
String token = given()
.contentType(ContentType.JSON)
.body(payload)
.log()
.all()
.when()
.post(loginUrl)
.thenReturn()
.cookie("access_token");
Cookie tokenCookie = new Cookie.Builder("access_token", token)
.setSecured(true)
.setComment("some comment")
.build();
assertEquals(given()
.cookie(tokenCookie)
.when()
.get(nextRequest)
.statusCode(), 200);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.