java - 以字符串形式获取放心的请求规范

标签 java rest-assured web-api-testing

我正在尝试以字符串形式获取所有请求详细信息(请求 url、代理、 header 、正文等),因为我需要将其重定向到 logback 日志文件。我声明了一个公共(public)基类,在其中声明了请求变量 (io.restassured.specification.RequestSpecification)

我在我的stepDef类的默认构造函数中使用这个基类。每个stepDef 类都有其唯一的log 实例。我尝试过使用这里的解决方案:How to get rest-assured log into something printable in a text file但没有成功

我尝试过以下解决方案:

  1. RestAssured.config = RestAssured.config().logConfig(new LogConfig(baseClass.loggerPrintStream.getPrintStream(), false));

  2. baseClass.request.config(RestAssured.config().logConfig(new LogConfig(baseClass.loggerPrintStream.getPrintStream(),true))).log().all();

  3. baseClass.request.filter(new RequestLoggingFilter(baseClass.loggerPrintStream.getPrintStream()));

以上似乎都没有为我解决问题。我想要的只是以字符串形式获取完整的请求规范 (baseClass.request),以便我可以将该字符串写入日志文件并提供更多详细信息。

最佳答案

如果您有 RequestSpecification,您可以使用 QueryableRequestSpecification 从请求中获取数据,如下所示:

        RequestSpecification requestSpecification = given()
            .auth()
                .preemptive()
                    .basic("username", "password")
            .contentType("application/json")
            .header("x-api-key", "some api key");
        QueryableRequestSpecification queryable = SpecificationQuerier.query(requestSpecification);
        System.out.println("Header is: " + queryable.getHeaders().get("x-api-key"));

您可以将其保存到文件中,而不是将规范打印到控制台。

关于java - 以字符串形式获取放心的请求规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57183721/

相关文章:

java - 配置重定向策略

java - RestAssured-主体中的对象抛出错误

automated-tests - Karate : Karate 中是否有一个 http-request Hook ,它会在每次 API 调用后自动调用,我可以修改它的行为?

unit-testing - 如何在不知道 Go 中显式类型的情况下从接口(interface)创建新对象?

JavaPOET - 只有类有父类(super class),而不是 INTERFACE

java - Android 应用程序在尝试加载 map 时崩溃

java - Sax解析器: processingInstruction() not called

java - 无法从 Influx 数据库检索列

java - 在 Cucumber-jvm 中使用多个步骤定义时出现 NullPointerException

karate - 在 Karate 中,我们如何与 BA 协作来自动化业务场景