如何配置RestAssured LogConfig以写入对文本文件的请求和响应

时间:2017-03-21 23:24:38

标签: java rest rest-assured

我完全是RestAssured的新手。我喜欢写请求和响应文本文件。我不想在每个测试中重复代码来提取和编写请求和响应,但我喜欢在设置方法中配置RestAssuredConfig以将请求和响应重定向到文本文件。

有人可以帮我理解我的代码中缺少的内容吗?我正在尝试配置LogConfig以写入对StringWriter的请求和响应,以便我可以使用它来写入所需的文件?

我尝试了谷歌的几个例子,但都没有帮助。

请注意,下面的示例是一个proto类型,我暂时在其中执行sysout,一旦代码工作,我就可以将其写入文本文件。

//这是我调用配置日志方法// configureRequestLogging

的示例代码
RequestSpecification request = given();
RequestSpecification logRequest = configureRequestLogging(request);

//这个方法应该SOP请求和响应。但我总是无效

private static RequestSpecification configureRequestLogging(RequestSpecification request) {
    RequestSpecification requestSpec;
    final StringWriter writer = new StringWriter();
    PrintStream captor = new PrintStream(new WriterOutputStream(writer), true);
    requestSpec = request.config(RestAssuredConfig.config().logConfig(LogConfig.logConfig().defaultStream(captor)))
    .log().all();

    System.out.println(writer.toString());

    return requestSpec;
    }

1 个答案:

答案 0 :(得分:0)

如果要将文件输出与控制台输出分开(例如,提供更多详细信息),则可以创建新的日志记录过滤器(接口Filter) 在那里你可以指定打印流

@Override
public Response filter(FilterableRequestSpecification requestSpec, FilterableResponseSpecification responseSpec, FilterContext ctx) {
    RequestPrinter.print(requestSpec, requestSpec.getMethod(), requestSpec.getUri(), LogDetail.ALL, new PrintStream(new FileOutputStream("example.txt", true)), true);
    return ctx.next(requestSpec, responseSpec);
}

此外,您只需添加内置的RequestLoggingFilter和所需的打印流。