记录RestAssured流量日志

16

我想知道是否有一种方法可以记录 restassured 处理的所有调用和响应(url + payload)。

最终目的是拥有一个“调试”测试日志,其中包含所有调用和流量日志。

当然,我可以在自己的代码中发出对记录器的调用,但我更希望全局设置此行为,而不是在所有测试方法中添加记录器调用。

感谢任何提示

4个回答

19

我正在发布一个示例:

 Response response = given().
                    queryParam("apiKey", "abc123").
                    queryParam("code", code).
                    queryParam("type", type).
                    contentType("application/json").
                    log().all().
                    when().
                    get(url).
                    then().
                    contentType("application/json").
                    statusCode(200).
                    extract().response();

9
不会记录服务器的结果 - 您需要在 then() 后面添加 log().all() - koppor
4
好的,你需要在请求的WHEN之前和响应的THEN之后添加log().all()。 - Mircea Stanciu

12

将log().all()设置为您的响应,就可以了。


1

1
完全不是。这是一个好问题,更好的是你在进一步研究后做出了自己的贡献。 - John Chesshir

0
以下是记录日志文件并全局配置的步骤,以便为所有测试记录请求和响应的详细信息:
创建静态PrintStream对象。
private static PrintStream logps;
        try {
        // fileoutputstream can be opened in append mode to append the logs every time
        // we run
        // printstream is enabled for autoflush
        logps = new PrintStream(new FileOutputStream("src/test/resources/logfile.txt", true), true);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

在beforeall静态方法中,应用默认实现的请求和响应日志过滤器,并启用它们使用打印流。
RestAssured.filters(new RequestLoggingFilter(logps), new ResponseLoggingFilter(logps));

现在我们不需要为请求和响应分别指定log()方法,而且日志将会被发送到日志文件中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接