如何将重新审核的请求数据记录到testNG报告文件
问题描述:
我想使用testNG的Reporter.log()方法(它需要字符串输入)将要打印到控制台中的请求数据记录到testNG报告文件。下面是我的要求规格:如何将重新审核的请求数据记录到testNG报告文件
private RequestSpecification getRequestSpec(ContentType requestbodytype, ContentType responsetype) {
return RestAssured.given().log().everything().contentType(requestbodytype).accept(responsetype);
}
protected Response get(String resourceURI, ContentType requestbodytype, ContentType responsetype, boolean enableUrlEncoding) {
Response rs = null;
rs = getRequestSpec(requestbodytype, responsetype).when().get(resourceURI);
Reporter.log(rs.print());
return rs;
}
我要登录下面的内容,以测试日志文件与响应一起,我会收到在此调用exection
Request method: GET
Request URI: http://localhost:port/url
Proxy: <none>
Request params: <none>
Query params: <none>
Form params: <none>
Path params: <none>
Headers: Accept=application/json, application/javascript, text/javascript
Content-Type=application/json; charset=UTF-8
Cookies: <none>
Multiparts: <none>
Body: <none>
谁能帮我解决这个。
感谢
答
我用RestAssured.config().logConfig()
它工作得很好。现在接下来的挑战是启用漂亮的打印。
private RequestSpecification getRequestSpec(ContentType requestbodytype, ContentType responsetype, boolean urlEncodingEnabled) {
writer = new StringWriter();
captor = new PrintStream(new WriterOutputStream(writer), true);
return RestAssured.given().config(RestAssured.config().logConfig(new LogConfig(captor, true))).urlEncodingEnabled(urlEncodingEnabled).log().everything().contentType(requestbodytype).accept(responsetype);
}
protected Response get(String resourceURI, ContentType requestbodytype, ContentType responsetype, boolean urlEncodingEnabled) {
Response rs = null;
rs = getRequestSpec(requestbodytype, responsetype, urlEncodingEnabled).when().get(resourceURI);
Reporter.log("---- Request ----");
Reporter.log(writer.toString());
Reporter.log("---- Response ----");
Reporter.log(rs.asString());
return rs;
}
答
您可以将过滤器添加到您的requestSpecBuilder并添加Reporter.log它。
rSpecBuilder.addFilter((req, response, ctx) -> {Reporter.log("Req called" + req.getDerivedPath()); return ctx.next(req, response); });
我很抱歉,这些lambda表达式在您的答案?我只能使用Java 1.7.0_45。 – user1634358