【发布时间】:2021-12-16 07:29:12
【问题描述】:
我在使用 jmeter 时遇到以下情况: 我有两个线程组,我想使用从第一个线程的响应中提取的变量到第二个线程。 我在做什么:
- 使用 JSON/YAML 路径提取器提取变量,然后使用 BeanShell Assertion
${__setProperty(id, ${id})};将其设置为属性 - 然后在第二个线程组中,我有一个 BeanShell 预处理器,我尝试使用以下脚本修改值
String ids2 = props.get("id");
String ids3 = vars.put(${__intSum(2,-4)});
String ids = vars.put(ids,"${__intSum(${ids2},${ids3})}");
结果我在 jmeter 中遇到了异常
ava.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source) ~[?:1.8.0_221]
at java.lang.Integer.parseInt(Unknown Source) ~[?:1.8.0_221]
at java.lang.Integer.parseInt(Unknown Source) ~[?:1.8.0_221]
at org.apache.jmeter.functions.IntSum.execute(IntSum.java:66) ~[ApacheJMeter_functions.jar:5.4.1]
at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:138) ~[ApacheJMeter_core.jar:5.4.1]
at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:113) ~[ApacheJMeter_core.jar:5.4.1]
at org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:91) ~[ApacheJMeter_core.jar:5.4.1]
at org.apache.jmeter.testbeans.TestBeanHelper.unwrapProperty(TestBeanHelper.java:129) ~[ApacheJMeter_core.jar:5.4.1]
at org.apache.jmeter.testbeans.TestBeanHelper.prepare(TestBeanHelper.java:84) ~[ApacheJMeter_core.jar:5.4.1]
at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfStart(StandardJMeterEngine.java:202) ~[ApacheJMeter_core.jar:5.4.1]
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:382) ~[ApacheJMeter_core.jar:5.4.1]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
目标是用 2 减少变量,然后将其转移到另一个我将仅在第二个线程组中使用的变量
我们将不胜感激任何帮助
【问题讨论】:
-
您可以考虑如下 1. 将字符串
ids2转换为数字后再加 2. vars.put() 需要有两个参数key,value。键和值都应该是字符串 3.ids应该在引号内 4. 使用带有 Groovy 的 JSR223 组件