URL 在 Allure 报告中为 Rest-Assured 使用编码查询参数

URL with encoded query parameters in Allure report for Rest-Assured

Allure 报告显示 URL 具有用于 Rest-Assured

的编码查询参数

我正在使用 Allure-Rest-Assured 将请求信息附加到 Allure 报告。我试图解码 http-request.ftl 中的 ${data.url} 值,该值格式化了这一行中的最终附件:

<div>
    <pre><code><#if data.method??>${data.method}<#else>GET</#if>: <#if data.url??>${data.url}<#else>Unknown</#if></code></pre>
</div>

但是这里不知道怎么调用js或者java

也可以在此处扩展 AllureRestAssured.class 结束解码 url,但应覆盖所有逻辑。

如果我通过 RequestSpecification.urlEncodingEnabled(false) 禁用编码,它会阻止请求

RestAssured.given()
           .filter(new AllureRestAssured())
           .queryParam("range", "{\"begin\":0,\"end\":1}")
           .when()
           .get("http://localhost:8080/users");

我在报告中收到带有编码查询参数的请求 URL: http://localhost:8080/users?range=%7B%22begin%22%3A0%2C%22end%22%3A1%7D

但我需要更易读的wariant解码查询参数 http://localhost:8080/users?range={"begin":0,"end":1}

我假设 AllureRestAssured io.restassured.filter.Filter 的实现不是你的,而是来自 Allure 框架。由于您无法更改它,我建议您创建自定义实现(基本上是 AllureRestAssured 的副本),但是 here 您应该添加一些更改:

      String uri = requestSpec.getURI();
      try {
        uri = URLDecoder.decode(uri, StandardCharsets.UTF_8.name());
      } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
      }
      final HttpRequestAttachment.Builder requestAttachmentBuilder = create("Request", uri)
                .setMethod(requestSpec.getMethod())
                .setHeaders(toMapConverter(requestSpec.getHeaders()))
                .setCookies(toMapConverter(requestSpec.getCookies()));