如何跨黄瓜步骤传递数据(Test Automation放心的API测试)?

时间:2018-06-27 15:42:10

标签: selenium cucumber rest-assured web-api-testing

我创建了一个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;
}

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

2 个答案:

答案 0 :(得分:0)

您可以在此处使用封装逻辑,并可以从其他类访问变量

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()方法。如果您使用相同的Test类实例,它将给出以上响应。

答案 1 :(得分:0)

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

在不同类中实现步骤时,在步骤之间共享状态的方法是在两个实现类中共享一个公共对象。在Java中,惯用的方法是使用依赖项注入。

我已经写了两个关于该主题的博客文章,它们可能对您有用。最简单的解决方案是使用PicoContainer。