如何将重新审核的请求数据记录到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); });

+0

我很抱歉,这些lambda表达式在您的答案?我只能使用Java 1.7.0_45。 – user1634358