Allure集成RestAssured生成报告不展示请求响应且报AttachmentRenderException错误
问题解决方案
错误根因
该报错由项目中Freemarker依赖版本过低导致。Allure 2.16.1版本使用的HTTP请求附件渲染模板http-request.ftl中用到了output_format头参数,该参数仅在Freemarker 2.3.24及以上版本支持,当项目中引入了更低版本的Freemarker传递依赖时,就会触发模板解析异常,同时导致请求、响应内容无法正常渲染到Allure报告中。
解决步骤
- 排查并排除低版本Freemarker依赖
执行以下Maven命令查询项目依赖树,定位所有版本低于2.3.24的org.freemarker:freemarker依赖:
找到引入低版本Freemarker的父依赖后,添加排除配置,示例如下:mvn dependency:tree<dependency> <groupId>引入低版本Freemarker的依赖groupId</groupId> <artifactId>引入低版本Freemarker的依赖artifactId</artifactId> <version>对应版本号</version> <exclusions> <exclusion> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> </exclusion> </exclusions> </dependency> - 显式引入兼容版本的Freemarker依赖
在pom.xml文件中显式声明高版本Freemarker依赖,确保与Allure 2.16.1版本兼容:<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.31</version> </dependency> - 调整过滤器顺序(可选)
若修改依赖后报告仍不展示请求响应内容,可将AllureRestAssured过滤器放在其他自定义日志过滤器之前,避免请求响应内容被提前拦截无法被Allure捕获:Response res = given() .baseUri(api_base_url_client) .headers(headers) .body(payload) .filter(new AllureRestAssured()) .filter(RestAssuredFilter.getRequestLoggingFilter()) .filter(RestAssuredFilter.getResponseLoggingFilter()) .when() .post(ApiPath.LOOKUP_POST.get_Api_Path(), sid);
修改完成后重新执行测试并生成Allure报告,即可正常展示接口请求、响应内容,且不会再触发模板解析异常。
内容的提问来源于stack exchange,提问作者Sobhit Sharma
相关产品推荐
相关产品推荐

