如何放心地测量任何请求的请求时间
How to measure request time for any request with rest assured
我想衡量我的请求性能,包括我放心执行的任何请求的响应时间。我发现有很多方法可以放心地从带有 response.getTime()
的请求响应中获得响应时间,例如 described on techeplanet.
但是我想知道是否有一个通用的钩子,我可以用它一次为所有请求实现这个?
感谢您的帮助!
我能想到的一种天真的方法是自定义过滤器。您可以修改它以适合您的情况。
定义过滤器
public class ResponseTimeFilter implements Filter {
private Map<String, Long> responseTime;
public ResponseTimeFilter() {
this.responseTime = new HashMap<>();
}
public Map<String, Long> getResponseTime() {
return Collections.unmodifiableMap(responseTime);
}
@Override
public Response filter(FilterableRequestSpecification requestSpec, FilterableResponseSpecification responseSpec, FilterContext ctx) {
final Response response = ctx.next(requestSpec, responseSpec);
String requestName = requestSpec.getDerivedPath();
long time = response.getTime();
responseTime.put(requestName, time);
return response;
}
}
客户代码
@Test
void name2() {
ResponseTimeFilter responseTimeFilter = new ResponseTimeFilter();
RestAssured.filters(responseTimeFilter);
RestAssured.get("http://postman-echo.com/get");
RestAssured.get("http://postman-echo.com/post");
Map<String, Long> responseTime = responseTimeFilter.getResponseTime();
responseTime.forEach((k, v) -> System.out.println("request : " + k + ", responseTime : " + v));
// request : /get, responseTime : 1333
// request : /post, responseTime : 551
}
我想衡量我的请求性能,包括我放心执行的任何请求的响应时间。我发现有很多方法可以放心地从带有 response.getTime()
的请求响应中获得响应时间,例如 described on techeplanet.
但是我想知道是否有一个通用的钩子,我可以用它一次为所有请求实现这个?
感谢您的帮助!
我能想到的一种天真的方法是自定义过滤器。您可以修改它以适合您的情况。
定义过滤器
public class ResponseTimeFilter implements Filter {
private Map<String, Long> responseTime;
public ResponseTimeFilter() {
this.responseTime = new HashMap<>();
}
public Map<String, Long> getResponseTime() {
return Collections.unmodifiableMap(responseTime);
}
@Override
public Response filter(FilterableRequestSpecification requestSpec, FilterableResponseSpecification responseSpec, FilterContext ctx) {
final Response response = ctx.next(requestSpec, responseSpec);
String requestName = requestSpec.getDerivedPath();
long time = response.getTime();
responseTime.put(requestName, time);
return response;
}
}
客户代码
@Test
void name2() {
ResponseTimeFilter responseTimeFilter = new ResponseTimeFilter();
RestAssured.filters(responseTimeFilter);
RestAssured.get("http://postman-echo.com/get");
RestAssured.get("http://postman-echo.com/post");
Map<String, Long> responseTime = responseTimeFilter.getResponseTime();
responseTime.forEach((k, v) -> System.out.println("request : " + k + ", responseTime : " + v));
// request : /get, responseTime : 1333
// request : /post, responseTime : 551
}