【问题标题】:Why ${var} and vars.get('var') didn't return same value?为什么 ${var} 和 vars.get('var') 没有返回相同的值?
【发布时间】:2020-06-16 06:45:11
【问题描述】:

你能解释一下为什么我用同一个变量得到两个不同的结果吗?

代码

def sql_req = "select message from messages where message_timestamp like '" + vars.get('todayDate') + "%' and message_content like '" + vars.get('msg_id') + "%'"

log.info('Req 1 : ' + sql_req)

log.info("Req 2 : select message from messages where message_timestamp like '${todayDate}%' and message_content like '${msg_id}%'")

结果

Req 1 : select message from messages where message_timestamp like '16/06/20%' and message_content like '132656787653545454%'
Req 2 : select message from messages where message_timestamp like '16/06/20%' and message_content like '878765654556467677%'

我在Thread Group 中设置了几个循环。但是${msg_id} 保留第一个循环的值。没有更新……

所以我被阻止了,因为我想在 JDBC Request 中使用此请求(select message from messages where message_timestamp like '${todayDate}%' and message_content like '${msg_id}%'),但由于值永远不会更新,每个循环都会执行相同的请求。

你能解释一下为什么吗? 提前谢谢你

【问题讨论】:

标签: jmeter


【解决方案1】:

根据JSR223 Sampler 文档:

JSR223 测试元素有一个特性(编译)可以显着提高性能。

使用此功能时,请确保您的脚本代码不会直接在脚本代码中使用 JMeter 变量或 JMeter 函数调用,因为缓存只会缓存第一个替换。而是使用脚本参数。

因此,要么将您的 ${msg_id} 放入“参数”部分,并在需要时将其引用为 Parametersargs[0]

或者使用vars 简写JMeterVariables 类实例,它提供对当前线程范围内所有JMeter 变量的读/写访问。如果需要,请参阅Top 8 JMeter Java Classes You Should Be Using with Groovy 文章了解更多详细信息

【讨论】:

    猜你喜欢
    • 2013-06-28
    • 1970-01-01
    • 2016-10-26
    • 2019-09-21
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    相关资源
    最近更新 更多