如果控制器带有 csv 输入,则使用 JMeter
using JMeter if controller with csv input
我正在对 API 进行负载测试,我从 CSV 文件中获取测试数据
这是我的 csv 的样子
我的if控制器是这样的
但是,当我运行线程组时,我得到以下错误:
2017/08/04 09:52:14 ERROR - jmeter.control.IfController: Check Country: error while processing [USA==USA]
org.mozilla.javascript.EcmaError: ReferenceError: "USA" is not defined. (<cmd>#1)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3951)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3929)
at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:4019)
at org.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1851)
at org.mozilla.javascript.gen._cmd__4._c_script_0(<cmd>:1)
at org.mozilla.javascript.gen._cmd__4.call(<cmd>)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3282)
at org.mozilla.javascript.gen._cmd__4.call(<cmd>)
at org.mozilla.javascript.gen._cmd__4.exec(<cmd>)
at org.mozilla.javascript.Context.evaluateString(Context.java:1219)
at org.apache.jmeter.control.IfController$RhinoJsEngine.evaluate(IfController.java:105)
at org.apache.jmeter.control.IfController.evaluateCondition(IfController.java:187)
at org.apache.jmeter.control.IfController.next(IfController.java:240)
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:222)
at org.apache.jmeter.control.GenericController.next(GenericController.java:176)
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:222)
at org.apache.jmeter.control.GenericController.next(GenericController.java:176)
at org.apache.jmeter.control.LoopController.next(LoopController.java:123)
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:222)
at org.apache.jmeter.control.GenericController.next(GenericController.java:176)
at org.apache.jmeter.control.LoopController.next(LoopController.java:123)
at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:87)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:247)
at java.lang.Thread.run(Thread.java:745)
我是 jmeter 的新手,所以我猜我在这里遗漏了一些东西。任何帮助将不胜感激。
所以,在做了一些研究之后,我发现字符串表达式需要用双引号引起来才能工作。
因此,以下条件有效
"${CTRY}"=="USA"
推荐使用Groovy language for any form of scripting in JMeter so I would recommend setting your If Controller condition via __groovy() function (available since JMeter 3.0), 相关的Groovy表达式是这样的:
${__groovy(vars.get('CTRY') == 'USA',)}
我正在对 API 进行负载测试,我从 CSV 文件中获取测试数据
这是我的 csv 的样子
我的if控制器是这样的
但是,当我运行线程组时,我得到以下错误:
2017/08/04 09:52:14 ERROR - jmeter.control.IfController: Check Country: error while processing [USA==USA]
org.mozilla.javascript.EcmaError: ReferenceError: "USA" is not defined. (<cmd>#1)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3951)
at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3929)
at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:4019)
at org.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1851)
at org.mozilla.javascript.gen._cmd__4._c_script_0(<cmd>:1)
at org.mozilla.javascript.gen._cmd__4.call(<cmd>)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3282)
at org.mozilla.javascript.gen._cmd__4.call(<cmd>)
at org.mozilla.javascript.gen._cmd__4.exec(<cmd>)
at org.mozilla.javascript.Context.evaluateString(Context.java:1219)
at org.apache.jmeter.control.IfController$RhinoJsEngine.evaluate(IfController.java:105)
at org.apache.jmeter.control.IfController.evaluateCondition(IfController.java:187)
at org.apache.jmeter.control.IfController.next(IfController.java:240)
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:222)
at org.apache.jmeter.control.GenericController.next(GenericController.java:176)
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:222)
at org.apache.jmeter.control.GenericController.next(GenericController.java:176)
at org.apache.jmeter.control.LoopController.next(LoopController.java:123)
at org.apache.jmeter.control.GenericController.nextIsAController(GenericController.java:222)
at org.apache.jmeter.control.GenericController.next(GenericController.java:176)
at org.apache.jmeter.control.LoopController.next(LoopController.java:123)
at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:87)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:247)
at java.lang.Thread.run(Thread.java:745)
我是 jmeter 的新手,所以我猜我在这里遗漏了一些东西。任何帮助将不胜感激。
所以,在做了一些研究之后,我发现字符串表达式需要用双引号引起来才能工作。
因此,以下条件有效
"${CTRY}"=="USA"
推荐使用Groovy language for any form of scripting in JMeter so I would recommend setting your If Controller condition via __groovy() function (available since JMeter 3.0), 相关的Groovy表达式是这样的:
${__groovy(vars.get('CTRY') == 'USA',)}