如何跨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。
- PicoContainer:http://www.thinkcode.se/blog/2017/04/01/sharing-state-between-steps-in-cucumberjvm-using-picocontainer
- 指南:http://www.thinkcode.se/blog/2017/06/24/sharing-state-between-steps-in-cucumberjvm-using-spring
- 冲刺:http://www.thinkcode.se/blog/2017/08/16/sharing-state-between-steps-in-cucumberjvm-using-guice
我创建了一个 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。
- PicoContainer:http://www.thinkcode.se/blog/2017/04/01/sharing-state-between-steps-in-cucumberjvm-using-picocontainer
- 指南:http://www.thinkcode.se/blog/2017/06/24/sharing-state-between-steps-in-cucumberjvm-using-spring
- 冲刺:http://www.thinkcode.se/blog/2017/08/16/sharing-state-between-steps-in-cucumberjvm-using-guice