繁体   English   中英

如何编写通用 function 以设置令牌和 cookies 从一个 GET API 接收以使用 Z55417F176C10DEEDF14Ass7BEEDF1 测试其他 API

[英]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.

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