加特林:如何在控制台中显示完整的HTTP响应正文或将其打印到文件中

Vla*_*mir 8 gatling scala-gatling

我是加特林的新手。我找不到有关如何查看完整的HTTP响应正文的简单完整示例。

这是我简单的例子

class CreateNotecard extends Simulation 
{  
  val baseURL = "https://portal.apps.stg.bluescape.com" 
  val httpConf = http 
    .baseURL(baseURL) 
    .userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36") 

  val scn = scenario("Create a notecard")  
    .exec(http("Get authenticity token") 
    .get("/users/sign_in") 
    .check(bodyString.saveAs("BODY"))) 

  setUp( 
    scn.inject(atOnceUsers(1))  
  ).protocols(httpConf)  
}
Run Code Online (Sandbox Code Playgroud)

如何将bodyString打印到文件中或在控制台上?

提前致谢

Pau*_*son 9

以您的示例为例,只需在exec下面添加通话即可。

class CreateNotecard extends Simulation {  
    // . . .
    .check(bodyString.saveAs("BODY"))) 

  .exec(session => {
    val response = session("BODY").as[String]
    println(s"Response body: \n$response")
    session
  })

  // . . .
}
Run Code Online (Sandbox Code Playgroud)

在调试调试代码时,直接从仿真代码打印非常有用。


Kim*_*erg 5

有很多方法可以执行此操作,从简单的system.out.println()调用,使用您最喜欢的Java库提取一些scala代码以将其保存到文件中,但是最简单的方法取决于您需要的响应主体可能是让logback.xml配置为您完成。

如果您是从gatling的Maven原型构建的项目,则该项目将已经包含一个logback.xml,其中包含一些注释掉的代码行,这些代码行包​​含将向控制台输出整个http请求/响应的追加程序,请在其中注释。如果只需要查看响应主体以开发或调试仿真,则启用其中的一组可能正是您所需要的:

 <!--Uncomment for logging ALL HTTP request and responses -->
    <!--<logger name="io.gatling.http.ahc" level="TRACE" />-->
    <!--<logger name="io.gatling.http.response" level="TRACE" />-->
<!-- Uncomment for logging ONLY FAILED HTTP request and responses -->
    <!--<logger name="io.gatling.http.ahc" level="DEBUG" />-->
    <!--<logger name="io.gatling.http.response" level="DEBUG" />-->
Run Code Online (Sandbox Code Playgroud)

如果要将响应正文打印到文件中,也可以使用logback文件。我宁愿使用以下简单配置,因为它将所有失败的请求/响应日志打印到存储加特林模拟结果的同一目录中的文件中,有助于更详细地了解在模拟中遇到的错误类型。专用文件。

对于加特林2.3:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
        </encoder>
    <immediateFlush>false</immediateFlush>
    </appender>

    <appender name="ERROR" class="ch.qos.logback.core.FileAppender">
        <file>target/gatling/simulation-errors.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
        </encoder>
        <immediateFlush>false</immediateFlush>
        <param name="Append" value="false" />
    </appender>

    <logger name="io.gatling.http.ahc" level="DEBUG" additivity="false">
        <appender-ref ref="ERROR"/>
    </logger>
    <logger name="io.gatling.http.response" level="DEBUG" additivity="false">
        <appender-ref ref="ERROR"/>
    </logger>

    <root level="WARN">
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>
Run Code Online (Sandbox Code Playgroud)

对于Gatling 3.0,必须用以下附加程序替换上面的两个记录器:

<logger name="io.gatling.http.engine.response" level="DEBUG" additivity="false">
    <appender-ref ref="ERROR"/>
</logger>
Run Code Online (Sandbox Code Playgroud)