[英]How to write generic function to set token and cookies received from one GET API to test other APIs using Rest Assured
下面的代码适用于在一个测试中编写的 API,但我想在其他测试类中使用身份验证。 请帮助我,我正在使用 JAVA
@Test(priority = 01, groups = { "API", "API Testing" }, description = "Validate") public void defaultAndSizeSolutionAPI() throws IOException {
FileInputStream fis= new FileInputStream(new File(userDir +"payload.json"));
//to get the csrf token and cookies
Response response = RestAssured.given()
.headers(headers.defaultHeaders())
.get("https://c9w22348.itcs.hpe.com/Services/SizingEngine/Gettoken");
Log.info(" API Status Code : "+ response.getStatusCode());
Log.info("CSRF Token : "+ response.getHeader("AfToken"));
Log.info("Cookies : "+ response.getCookies());
//To set csrf Token and cookies and get ezmeralSizer Default
RestAssured.given()
.headers(headers.defaultHeaders())
.header("CSRFToken", response.getHeader("AfToken"))
.cookies(response.getCookies())
//For Solution Api (Actual Test)
Response solution= RestAssured.given()
.headers(headers.defaultHeaders())
.header("CSRFToken",response.getHeader("AfToken"))
.cookies(response.getCookies())
.body(IOUtils.toString(fis, "UTF-8"))
.post("XXXXXXXXXXXXX/Endpoints");
Log.info("Solution API Status Code : "+ solution= .getStatusCode());
Log.info("Solution response body : "+ solution= .getBody().jsonPath().prettify());
softAssert.assertEquals(200, solution= .getStatusCode());
softAssert.assertAll();
}
似乎您正在使用 TestNG,因此可以通过以下方式完成:在带有注释 @BeforeSuite 的方法中发出授权请求,该请求将在所有测试之前执行。 例如,在该方法中,将您的令牌值提取为字符串,并将集合作为属性。
final String TOKEN_VALUE = authResponse.path("access_token").toString();
System.setProperty("token", TOKEN_VALUE);
之后,只需在常规测试方法中获取该属性。
given()
.contentType(ContentType.JSON)
.header("Authorization", System.getProperty("token"))
.get("your/endpoint/url")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.