如果控制器带有 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',)}