设置 restAssured 以记录全局的所有请求和响应

Set restAssured to log all requests and responses globally

我想默认为所有 RestAssured 响应和请求启用日志记录。

这是我的做法:

RestAssured.requestSpecification = new RequestSpecBuilder().
        setBaseUri("api").
        setContentType(ContentType.JSON).
        build().
        log().all();
RestAssured.responseSpecification = new ResponseSpecBuilder().
        build().
        log().all();

requestSpecification 工作正常,但是 responseSpecification 我得到:

Cannot configure logging since request specification is not defined. You may be misusing the API.

我真的不想在每个 then 之后使用 log().all()

将日志记录过滤器添加到 RestAssured 默认值,请参阅 filters and defaults

To create a filter you need to implement the io.restassured.filter.Filter interface. To use a filter you can do:
given().filter(new MyFilter()). ..

There are a couple of filters provided by REST Assured that are ready to use:
1. io.restassured.filter.log.RequestLoggingFilter: A filter that'll print the request specification details.
2. io.restassured.filter.log.ResponseLoggingFilter: A filter that'll print the response details if the response matches a given status code.
3. io.restassured.filter.log.ErrorLoggingFilter: A filter that'll print the response body if an error occurred (status code is between 400 and 500)

任何过滤器都可以添加到请求、规范或全局默认值:

RestAssured.filters(..); // List of default filters

我认为你需要查看日志然后测试失败,在这种情况下请放心使用此配置:

RestAssured.enableLoggingOfRequestAndResponseIfValidationFails();

将这行代码放在您的 @BeforeClass 方法中,每个给定的调用都会创建一个日志,就像在每个给定之后使用 log.all() 一样:

RestAssured.filters(new RequestLoggingFilter(), new ResponseLoggingFilter());


放心项目:
https://github.com/rest-assured/rest-assured/blob/master/rest-assured/src/main/java/io/restassured/filter/log/RequestLoggingFilter.java

您可以在 class 级别定义过滤器

public ClassName() {
    filters(new RequestLoggingFilter(), new ResponseLoggingFilter(), new ErrorLoggingFilter());
}