我使用java-cucumber并放心使用。目前我尝试创建报告,其中我不会为报告中的每个请求提供完整的请求和响应信息。所以问题是: 如果可以保存变量中的所有请求和响应信息?或者使用其他方式在报告中获取此数据?
P.S。我知道如何获得响应(extract().response()
)或在控制台日志(log().all()
)中打印所有请求信息。我已经设置了maven-cucumber-reporting,它生成html报告,但没有所有请求和响应API数据。
答案 0 :(得分:1)
如果您可以考虑从REST保证切换,Karate具有您正在寻找的详细功能,其中详细的HTTP请求和响应日志在Cucumber HTML报告中显示在线。这是short video demo。
您可以找到空手道和REST保证here的详细比较。
免责声明:我是开发者。
答案 1 :(得分:1)
import io.restassured.specification.FilterableRequestSpecification;
import io.restassured.specification.FilterableResponseSpecification;
// ...
尝试过此方法,直到我开始使用RestAssured
并行运行测试为止,它都可以正常工作。该报告偶尔会破坏测试运行,因此我不得不将其注释掉,而且我现在也对另一种如何记录请求/响应数据的方式感兴趣。
答案 2 :(得分:0)
不熟悉黄瓜,但如果它有一些东西可以捕获报告的输出,你可以在REST Assured中创建一个过滤器:
import io.restassured.filter.FilterContext;
import io.restassured.filter.OrderedFilter;
import io.restassured.response.Response;
import io.restassured.specification.FilterableRequestSpecification;
import io.restassured.specification.FilterableResponseSpecification;
public class RcAllureFilter implements OrderedFilter {
@Override
public int getOrder() {
return LOWEST_PRECEDENCE;
}
@Override
public Response filter(FilterableRequestSpecification requestSpec, FilterableResponseSpecification responseSpec, FilterContext ctx) {
Response response = ctx.next(requestSpec, responseSpec);
//you need to implement it, refer to io.restassured.internal.print.RequestPrinter#print
printRequest(requestSpec.getMethod(), requestSpec.getURI(), requestSpec);
//you need to implement it, refer to io.restassured.internal.print.ResponsePrinter#print
printResponse(response, response, response.getStatusLine());
return response;
}
}