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 有一些性能限制,在高负载的情况下,它可能是意外行为的原因。