如何跨cucumber步骤传递数据(测试自动化放心API测试)?

How to pass data across cucumber steps (Test Automation rest assured API test)?

我创建了一个 api 测试,它到达一个端点并接收返回的响应,但是我正在努力在另一个黄瓜步骤中使用这个响应。

我的第一步使用以下方法:

public Response booking(SharedStepData sharedStepData, String path, BookingType bookingType) throws IOException {
    String url = "https://example.net." + System.getProperty("endpoint") + "/v10/" + path + "Booking";

    RestAssured.useRelaxedHTTPSValidation();
    String payload = createBookingPayload(sharedStepData, bookingType);
    Response response = RestAssured
            .given().contentType(ContentType.JSON)
            .log().all()
            .body(payload)
            .when().post(url)
            .thenReturn();

    ResponseBody body = response.getBody();;
    return response;
}

我知道需要保存此响应,然后在另一个步骤方法中使用它来执行另一个操作,例如使用响应中的特定数据来命中另一个端点,有什么想法吗?

这里可以使用封装逻辑,可以从其他地方访问变量class

public class Test{

    private String bookingResponse;

    public String getBookingResponse(){
        return bookingResponse;
    }

    public void setBookingResponse(String response){
        bookingResponse=response;
    } 
}

调用第一个方法后,您可以更新 bookingResponse 值,如下所示

Test test=new Test();

test.setBookingResponse(<<Call your first Response Method>>);

只要你想访问上面的响应,就可以使用 test.getResponse() 方法。如果您使用相同的测试 class 实例,它将给出上述响应。

在步骤之间共享状态的方法是将其存储在实现步骤的class中的一个字段中。

当步骤在不同 classes 中实现时,在步骤之间共享状态的方法是在两个实现 classes 中共享一个公共对象。在 Java 中执行此操作的惯用方法是使用依赖注入。

我已经写了几篇关于这个主题的博文,它们可能对你有用。最简单的解决方案是使用 PicoContainer。