通过从 Google Chrome 创建一个“.har”文件,我创建了一个 Gatling 模拟。而且我已经更改了输入参数并尝试从“.csv”文件中获取数据。现在,当我运行模拟时,如何检查 Gatling 模拟是否已从“.csv”文件中获取数据字段?
问问题
2914 次
2 回答
3
在 conf/logback.xml 中暂时将日志级别降低到 DEBUG,您将看到正在生成的请求。
于 2014-04-28T14:47:51.667 回答
1
Gatling 有相当好的错误处理/记录连接到馈线。
当您提供错误的文件名或馈送文件路径时,您将收到以下错误(java.lang.IllegalArgumentException:无法找到馈送文件)。请注意,测试不会运行。
java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at io.gatling.mojo.MainWithArgsInFile.runMain(MainWithArgsInFile.java:50) at io.gatling.mojo.MainWithArgsInFile.main(MainWithArgsInFile.java:33) Caused by: java.lang.IllegalArgumentException: Could not locate feeder file: file gatling/src/test/resources/data/wrongFile.csv doesn't exist at io.gatling.core.feeder.FeederSupport$class.feederBuilder(FeederSupport.scala:53) at io.gatling.core.Predef$.feederBuilder(Predef.scala:22) at io.gatling.core.feeder.FeederSupport$class.separatedValues(FeederSupport.scala:44) at io.gatling.core.Predef$.separatedValues(Predef.scala:22) at io.gatling.core.feeder.FeederSupport$class.separatedValues(FeederSupport.scala:41) at io.gatling.core.Predef$.separatedValues(Predef.scala:22) at io.gatling.core.feeder.FeederSupport$class.csv(FeederSupport.scala:34) at io.gatling.core.Predef$.csv(Predef.scala:22) at com.scenario.Scenario.<init>(Scenario.scala:10) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442) at io.gatling.app.Gatling$.io$gatling$app$Gatling$$$anonfun$1(Gatling.scala:41) at io.gatling.app.Gatling.run(Gatling.scala:92) at io.gatling.app.Gatling.runIfNecessary(Gatling.scala:75) at io.gatling.app.Gatling.start(Gatling.scala:65) at io.gatling.app.Gatling$.start(Gatling.scala:57) at io.gatling.app.Gatling$.fromArgs(Gatling.scala:49) at io.gatling.app.Gatling$.main(Gatling.scala:43) at io.gatling.app.Gatling.main(Gatling.scala)
当您的属性与 feeder 中的列名不匹配时,您将收到以下错误。所有测试都会以错误结束。
00:10:07.937 [ERROR] i.g.h.a.s.HttpRequestAction - 'httpRequest-1' failed to execute: No attribute named 'wrongAttributeName' is defined
当您有带有馈线数据的空文件时,您将收到以下错误。
java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at io.gatling.mojo.MainWithArgsInFile.runMain(MainWithArgsInFile.java:50) at io.gatling.mojo.MainWithArgsInFile.main(MainWithArgsInFile.java:33) Caused by: java.lang.IllegalStateException: Feeder is now empty, stopping engine at io.gatling.core.action.SingletonFeed$$anonfun$receive$1.applyOrElse(SingletonFeed.scala:61) at akka.actor.Actor$class.aroundReceive(Actor.scala:482) at io.gatling.core.akka.BaseActor.aroundReceive(BaseActor.scala:23) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526) at akka.actor.ActorCell.invoke(ActorCell.scala:495) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) at akka.dispatch.Mailbox.run(Mailbox.scala:224) at akka.dispatch.Mailbox.exec(Mailbox.scala:234) at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
当这些都没有出现时,您几乎可以确定一切正常。但是要验证 Gatling 发送的参数,您可以检查
logback.xml 中的 Gatling 日志(将日志级别更改为 DEBUG)
<root level="DEBUG"> <appender-ref ref="CONSOLE" /> </root>
然后你会看到类似的日志
00:13:53.233 [DEBUG] i.g.h.a.s.HttpTx$ - Sending request=Action name uri=http://your-rest-service?param1=value1¶m2=value2: scenario=com.scenario.Scenario Scenario name, userId=1
访问服务器上的日志。例如,在 Tomcat 指令中,您可以在此处获取
于 2017-02-06T23:20:30.003 回答