You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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依赖:
    mvn dependency:tree
    
    找到引入低版本Freemarker的父依赖后,添加排除配置,示例如下:
    <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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:54:01