如何将放心的请求数据记录到 testNG 报告文件
How to log restassured request data to testNG report file
我想使用 testNG 的 Reporter.log() 方法将在控制台中打印的请求数据记录到 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;
}
我想将以下内容记录到测试日志文件以及我将在执行此调用时收到的响应
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>
谁能帮我解决这个问题。
谢谢
您可以向 requestSpecBuilder 添加过滤器并向其添加 Reporter.log。
rSpecBuilder.addFilter( (req, response, ctx) -> {Reporter.log("Req called" + req.getDerivedPath()); return ctx.next(req, response); });
我用了 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;
}
我想使用 testNG 的 Reporter.log() 方法将在控制台中打印的请求数据记录到 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;
}
我想将以下内容记录到测试日志文件以及我将在执行此调用时收到的响应
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>
谁能帮我解决这个问题。
谢谢
您可以向 requestSpecBuilder 添加过滤器并向其添加 Reporter.log。
rSpecBuilder.addFilter( (req, response, ctx) -> {Reporter.log("Req called" + req.getDerivedPath()); return ctx.next(req, response); });
我用了 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;
}