【问题标题】:Jmeter functions parse string containg $ symbolJmeter函数解析包含$符号的字符串
【发布时间】:2020-11-02 20:26:07
【问题描述】:

我有一个看起来像这样的字符串数组。此代码位于设置线程中的 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}时如何获取原始值?

【问题讨论】:

    标签: variables parameters jmeter escaping beanshell


    【解决方案1】:

    我无法使用最新的JMeter 5.3 重现您的问题

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

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

    【讨论】:

    • 感谢德米特里的回复。我相信我找到了问题所在;我在结果树的 RAW 选项卡中查看 POST 数据。在 HTTP 选项卡中查看时,它会显示预期值。我是 Jmeter 和 IT 的新手,如果我错了,请纠正我,但我相信这意味着请求实际上是用正确的值提出的?附截图:RAW:imgur.com/Hj9WebU //////// HTTP:imgur.com/Hj9WebU
    猜你喜欢
    • 2015-09-09
    • 2020-03-17
    • 2013-05-31
    • 2011-12-19
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    相关资源
    最近更新 更多