Reputation: 9542
I'd like to measure my request performance including response time for any request I do with rest assured. I found many ways to get response time with rest assured from a request response with response.getTime()
eg described on techeplanet.
However I was wondering whether there is like a generic hook, with which I can achieve this for all requests at once?
Thx I appreciate your help!
Upvotes: 1
Views: 1540
Reputation: 5917
One naive way I can think of is a custom filter. You can modify it to fit your situation.
Define filter
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;
}
}
Client code
@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
}
Upvotes: 2