本文转自:http://stackoverflow.com/questions/20866023/jmeter-var-putobject-variable-use-in-other-jdbc-request-but-it-is-ignored
Test Plan Thread Group JDBC Connection JSR223 Sampler JDBC Request Result Tree
Put codes in the JSR223 Sampler:
int id = Integer.parseInt( vars.get("party_id") ); vars.putObject("id", new Integer(id));
Then use id in JDBC Request:
select * from table where column = ?
Parameter Value: ${id}
parameter Type: NUMBER
It seems the JDBC request is ignored and no output shown in the result tree.
Please help to look into the issue...
Thanks in advance
jmeter
share
improve this question
edited Jan 1 '14 at 6:07
User Defined Variable stores value of String
but not Integer
. I wonder if there is any error/warning in JMeter console (log).
Cast you integer to String to put it into UDV.
Just specify ${UDV} if you wanted it to be an integer. Add quotes ('$UDV') if you want it as varchar in SQL query
–
–
–
–
–
Have reproduced your problem, it looks like that JDBC Sampler doesn't accept integers, only Strings.
I'm getting following error in jmeter.log, guess you too:
2014/01/04 11:30:14 ERROR - jmeter.threads.JMeterThread: Error while processing sampler 'JDBC Request' : java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
So your cast to integer is absolutely not required. Try changing your JSR223 code to following:
vars.put("id", vars.get("party_id"));
It should work fine.
The bit, which tells MySQL which datatype bind the variable to is ParameterType
stanza. You need to specify paratemer type there, not in JSR223
share
improve this answer
answered
Jan 4 '14 at 8:39
Jmeter 的 JSR223 控件是 代替 BeanShell 的新一代脚本控件,支持多种脚本语言,尤其是其中的 Groovy,更是重点推荐使用的脚本语言,本文研究其中的 vars 和 props 两种对象的用法。
二者的区别
vars
props
本文使用的 Jmeter 是 4.0 版本
二者的区别
props 和 vars 主要有两点区别:
vars 只能在当前线程内使用,pr..
在使用Jmeter过程中,或多或少都会接触些BeanShell,它会使工具的使用,变得更灵活。Jmeter中关于BeanShell的有:1.BeanShell Sampler 取样器:完成Beanshell请求组件中定义的脚本功能;2.BeanShell PostProcessor 后置处理器:可通过编程方式获取对应请求的响应结果;3.BeanShell PreProcessor 前置处理器:可通过编程方式在发起请求以前做预处理,比如编码或者加密;
文章目录1、Beanshell2、常用内置变量3、log4、varsvars.get()vars.put()vars.remove()5、props6、ctx7、SampleResult
JMeter 中可以使用 Beanshell Sampler 编写一些简单的脚本,实现更多功能。
1、Beanshell
Beanshell 是一种轻量级的 Java 脚本,纯 Java 编写的,能够动态的执行标...
BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性。本篇只记录一下基本的使用。有以下五个组件:
Beanshell Sampler
Beanshell PreProcessor
Beanshell PostProcessor
Beanshell Assertion
__Beanshe...
beanshell中创建新的参数newvarname,赋值为另外一个字符串
vars.put(“newvarname”,String.valueOf(definedvarname));
引用参数值,任何一个地方均可以
${newvarname}
在上一篇中,我们了解了在beanshell中可以利用vars获取和设置新的变量,也知道了如何用log去查看日志,以及两种获取变量值的方法。没看过的可以点这https://mp.csdn.net/mp_blog/creation/editor/120850385
本篇主要讲下两种获取变量值方法间的差异。同样设置一个配置元素,名为name,值为junjun
按如下代码执行,可见打印结果都是junjun。
log.info("vars.get获取的name值:"+var...
变量参数化,如多个数值时一般都会想到使用“CSV Data Set Config”来实现,但实际场景中只需要有限的指定数值来进行参数化,调用文件来维护文件也是比较麻烦的。所以在此使用另一种方法,直接在脚本中定义使用。
逻辑就是先创建一个JSR223 Samper初始化参数,然后使用Loop Controller进行控制循环 ,这里是实例没有实际的请求,如有实际的请求时,把Loop Controller 下的JSR223 Samper改为请求的前置条件**“JSR223 PreProcesso
beanshell是jmeter内嵌的一个java解释器,大概175k,比较小,你可以在这个元件中运行自己的脚本,前置处理器,定时器,取样器,断言,监听器都有beanshell元件,但是都大同小异,先来看beanshell前置处理器
reset interpreter:是否每次都重启解释器,可以不用动,但是大并发量的情况下官方建议改为true
parameter:其中的数据会被自动...
JSR223 Samplerjsr223的采样器允许使用jsr223脚本代码来运行一个取样器。
jsr 223测试元素有一个可以显著提高性能的特性(编译)。从这个特性中获益:
使用脚本文件而不是内联它们。这将使JMeter编译它们,如果这个特性在ScriptEngine中可用,并缓存它们。
若编译属性设置为true,可以使用脚本文本和检查缓存编译的脚本。 在使用这个特性时,确保脚本代码没有直接在