我是加特林的新手。 我找不到一个关于如何查看完整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)
}
如何将bodyString打印到文件或控制台上?
提前致谢
答案 0 :(得分:3)
使用您的示例,只需在下面添加exec
调用即可。
class CreateNotecard extends Simulation {
// . . .
.check(bodyString.saveAs("BODY")))
.exec(session => {
val response = session("BODY").as[String]
println(s"Response body: \n$response")
session
})
// . . .
}
调试时直接从仿真代码打印很有用。
答案 1 :(得分:2)
有很多方法可以做到这一点,从简单的system.out.println()调用,剔除一些scala代码,使用你喜欢的java库将它保存到一个文件,但是根据你需要的响应主体,最简单的可能是让logback.xml配置为你做。
如果您已经从gatling maven原型构建项目,那么它将包含一个logback.xml,其中包含一些注释掉的代码行,这些代码行包含打印整个http请求/响应到控制台的appender,并对其进行注释。如果您只是需要查看响应体来开发或调试模拟,那么启用其中一组就可能正是您所需要的:
<?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>
如果要将响应主体打印到文件,也可以使用logback-file。我更喜欢使用以下简单配置,因为它将所有失败的请求/响应日志打印到与存储加特林仿真结果相同的目录中的文件,这有助于更详细地了解您在模拟中获得的错误类型专用文件。
对于加特林2.3:
<logger name="io.gatling.http.engine.response" level="DEBUG" additivity="false">
<appender-ref ref="ERROR"/>
</logger>
对于Gatling 3.0,上面的两个记录器必须替换为以下的appender:
Conduit
答案 2 :(得分:2)
根据gatling-sbt-demo-documentation,这是针对加特林3.2.0的解决方案
<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>
<!-- uncomment and set to DEBUG to log all failing HTTP requests -->
<!-- uncomment and set to TRACE to log all HTTP requests -->
<!--<logger name="io.gatling.http.engine.response" level="TRACE" />-->
<root level="WARN">
<appender-ref ref="CONSOLE" />
</root>
只是注释
<!--<logger name="io.gatling.http.engine.response" level="TRACE" />-->
与过去一样。