Jmeter 函数解析包含 $ 符号的字符串
Jmeter functions parse string containg $ symbol
我有一个看起来像这样的字符串数组。此代码位于设置线程中的 beanshell 采样器中,这就是为什么我使用 props.put() 而不是 vars.put()。
String [] priceList = {"2.56","2.98","0.98","5.32","3.98"};
props.put("price_list", priceList);
然后测试转到主线程组,每个用户都从 beanshell 采样器中的数组中分配一个随机值:
var priceList = props.get("price_list");
var priceRandomIndex = ThreadLocalRandom.current().nextInt(0, priceList.length);
vars.put("price", priceList[priceRandomIndex]);
用户然后使用“价格”作为参数发出 post 请求,在采样器组件中引用为 ${price}。结果树显示请求是使用不正确的值发出的,如下所示:
24233.98
24765.32
24472.56
当 Jmeter 在请求期间尝试获取 ${price} 时出现问题。日志确认该变量在该点之前具有正确的值。
我意识到问题是美元符号让 jmeter 调用变量上的一些函数,returns 一个不同的值。 jmeter调用${price}时如何获取原始值?
我无法使用最新的 JMeter 5.3
重现您的问题
所以我建议查看 jmeter.log file 是否有任何可疑条目
还有 since JMeter 3.1 you're supposed to be JSR223 Test Elements and Groovy language 脚本,所以最好迁移到 Groovy,因为 Beanshell 有一些性能限制,在高负载的情况下,它可能是意外行为的原因。
我有一个看起来像这样的字符串数组。此代码位于设置线程中的 beanshell 采样器中,这就是为什么我使用 props.put() 而不是 vars.put()。
String [] priceList = {"2.56","2.98","0.98","5.32","3.98"};
props.put("price_list", priceList);
然后测试转到主线程组,每个用户都从 beanshell 采样器中的数组中分配一个随机值:
var priceList = props.get("price_list");
var priceRandomIndex = ThreadLocalRandom.current().nextInt(0, priceList.length);
vars.put("price", priceList[priceRandomIndex]);
用户然后使用“价格”作为参数发出 post 请求,在采样器组件中引用为 ${price}。结果树显示请求是使用不正确的值发出的,如下所示:
24233.98
24765.32
24472.56
当 Jmeter 在请求期间尝试获取 ${price} 时出现问题。日志确认该变量在该点之前具有正确的值。 我意识到问题是美元符号让 jmeter 调用变量上的一些函数,returns 一个不同的值。 jmeter调用${price}时如何获取原始值?
我无法使用最新的 JMeter 5.3
重现您的问题所以我建议查看 jmeter.log file 是否有任何可疑条目
还有 since JMeter 3.1 you're supposed to be JSR223 Test Elements and Groovy language 脚本,所以最好迁移到 Groovy,因为 Beanshell 有一些性能限制,在高负载的情况下,它可能是意外行为的原因。