我需要记录放心的流量 - 通过使用:when().post().then().log().all().extract().response();
来做到这一点
现在,将其余消息放入std中,但我希望通过AfterAll()
将这些消息记录在scenario.write()
调用的黄瓜报告中。
如何将保证的日志保存到变量中并将其传递给scenario.write()
?
你可以使用RequestLoggingFilter和ResponseLoggingFilter课程。将配置的PrintStream提供给它们的构造函数,并添加过滤器以请求规范。它可以这样看:
OutputStream outputStream = null; //use your OutputStream that will write where you need it
PrintStream printStream = new PrintStream(outputStream, true);
RequestLoggingFilter requestLoggingFilter = new RequestLoggingFilter(printStream);
ResponseLoggingFilter responseLoggingFilter = new ResponseLoggingFilter(printStream);
RestAssured.given()
.filters(requestLoggingFilter, responseLoggingFilter)
.when()
.get("/api");
或者你也可以实现Filter界面来使用你自己的界面。以下是记录请求和响应的示例:
public class CustomLogFilter implements Filter {
Logger log = LoggerFactory.getLogger(CustomLogFilter.class);
@Override
public Response filter(FilterableRequestSpecification requestSpec,
FilterableResponseSpecification responseSpec, FilterContext ctx) {
Response response = ctx.next(requestSpec, responseSpec);
StringBuilder requestBuilder = new StringBuilder();
requestBuilder.append(requestSpec.getMethod());
requestBuilder.append("\n");
requestBuilder.append(requestSpec.getURI());
requestBuilder.append("\n");
requestBuilder.append("*************");
log.info(requestBuilder.toString()); //Log your request where you need it
StringBuilder responseBuilder = new StringBuilder();
responseBuilder.append(response.getStatusLine());
responseBuilder.append("\n");
responseBuilder.append(response.getBody());
log.info(responseBuilder.toString()); //Log your response where you need it
return response;
}
}
然后在RestAssured请求中使用它:
Filter logFilter = new CustomLogFilter();
RestAssured.given()
.filter(logFilter)
.when()
.get("/api");
我们需要将第一个Response转换为String,然后在logs或scenario.write中使用此字符串引用。我想在下面的代码中解释 -
String responseString, placeid;
private static Logger log =LogManager.getLogger(basics3.class.getName());
Properties prop=new Properties();
@Before
public void getData() throws IOException
{
FileInputStream fis=new FileInputStream(System.getProperty("user.dir")+"//env.properties");
prop.load(fis);
}
@Test
public void AddandDeletePlace()
{
RestAssured.baseURI= prop.getProperty("HOST");
Response res=given().
queryParam("key",prop.getProperty("KEY")).
body(payLoad.getPostData()).
when().
post(resources1.placePostData()).
then().assertThat().statusCode(200).and().contentType(ContentType.JSON).and().
body("status",equalTo("OK")).
extract().response();
responseString=res.asString();
JsonPath js= new JsonPath(responseString);
placeid=js.get("place_id");
}
@After
public void setLogs(){
log.info(responseString);
log.info(placeid);
}
希望这能为您提供打印REST Assured日志的一些愿景。