Jmeter函数解析包含$符号的字符串

问题描述

我有一个看起来像这样的字符串数组。这段代码位于安装线程的beanshell采样器中,这就是为什么我使用props.put()而不是vars.put()的原因。

String [] priceList = {"$472.56","$432.98","$200.98","$765.32","$233.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]);

然后,用户以“ price”为参数发出发布请求,在采样器组件中将其称为$ {price}。结果树显示请求是使用不正确的值发出的,如下所示:

24233.98 
24765.32 
24472.56 

当Jmeter在请求期间尝试获取$ {price}时,会发生问题。日志确认该变量在该点之前具有正确的值。 我意识到问题在于美元符号使jmeter在返回不同值的变量上调用某些函数。 jmeter调用$ {price}时如何获得原始值?

解决方法

我无法使用最新的JMeter 5.3

重现您的问题

enter image description here

所以我建议您查看jmeter.log file中是否有可疑条目

since JMeter 3.1 you're supposed to be JSR223 Test Elements and Groovy language用于脚本编写,因此最好迁移到Groovy,因为Beanshell具有一些性能限制,并且在高负载的情况下,这可能是意外行为的原因。