简体   繁体   中英

I want to take value from one API response body and use into another api request using Cucumber gherkin

Scenario: Verify the manifest of published app 1. Given Base url "baseUrl" and path "basepath" 2. And Headers are 3. And Query parameter 4. And App with below details 5. When I execute the another API with Base url "baseUrl" and path "basePath" 6. And Append with Attributevalue (complete url will be, baseUrl + basePath + AttributeValue ) 7. And api headers
8. And query parameters
9. Then Success message with 200 status code

I have implemented something very similar recently. You can utilize below code and modify it to your need. You'll probably need to omit some steps from your feature. Those steps are included as part of step def implementation in below code

Feature

@get
  Scenario: get employee
    
    Given an employee exist in the database with id "2"
   When  user retrieves employee info by id
    Then the status code for get employee is 200

StepDefs

import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.And;


import io.restassured.RestAssured;
import io.restassured.path.json.JsonPath;


import io.restassured.response.Response;
import io.restassured.response.ValidatableResponse;
import io.restassured.specification.RequestSpecification;

import static org.junit.jupiter.api.Assertions.*;
import static org.assertj.core.api.Assertions.assertThat;
    public class secondIT {
        
        public static Response response;
        public static ValidatableResponse json;
        public static RequestSpecification request;
        public  static String id;
         public static JsonPath jsonPathEvaluator;
        
        
      
        @Given("an employee exist in the database with id {string}")
        public void an_employee_exists_with_id(String ID){
            secondIT.id=ID;
            RestAssured.baseURI = "http://dummy.www.com/api/v1";
            secondIT.request = RestAssured.given();
        }
        
        @When("user retrieves employee info by id")
        public void user_retrieves_employee_info_by_id(){
            
            secondIT.response = secondIT.request.pathParam("id", secondIT.id).get("/employee/{id}");
            secondIT.jsonPathEvaluator = secondIT.response.jsonPath();
            assertNotNull(response);
            
        }
        
        @Then("the status code for get employee is {int}")
        public void verify_status(int sc){
            System.out.println("status code check..  " );
            secondIT.json = secondIT.response.then().statusCode(sc);
            System.out.println("status code:  " + secondIT.response.getStatusCode());
            assertEquals(sc,secondIT.response.getStatusCode());
        }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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