为啥 $var 和 vars.get('var') 没有返回相同的值?
Posted
技术标签:
【中文标题】为啥 $var 和 vars.get(\'var\') 没有返回相同的值?【英文标题】: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%'
),但由于值永远不会更新,每个循环都会执行相同的请求。
你能解释一下为什么吗? 提前谢谢你
【问题讨论】:
见***.com/questions/46418275/… 【参考方案1】:根据JSR223 Sampler 文档:
JSR223 测试元素有一个特性(编译)可以显着提高性能。
使用此功能时,请确保您的脚本代码不会直接在脚本代码中使用 JMeter 变量或 JMeter 函数调用,因为缓存只会缓存第一个替换。而是使用脚本参数。
因此,要么将您的 $msg_id
放入“参数”部分,并在需要时将其引用为 Parameters
或 args[0]
:
或者使用vars
简写JMeterVariables 类实例,它提供对当前线程范围内所有JMeter 变量的读/写访问。如果需要,请参阅Top 8 JMeter Java Classes You Should Be Using with Groovy 文章了解更多详细信息
【讨论】:
以上是关于为啥 $var 和 vars.get('var') 没有返回相同的值?的主要内容,如果未能解决你的问题,请参考以下文章
jmeter 小脚本 BeanShell PreProcessor vars.get