【问题标题】:jmeter var.putobject variable use in other jdbc request, but it is ignoredjmeter var.putobject 变量在其他 jdbc 请求中使用,但被忽略
【发布时间】:2014-01-18 21:38:45
【问题描述】:

测试计划 线程组 JDBC 连接 JSR223 采样器 JDBC 请求 结果树

将代码放入 JSR223 Sampler:

int id = Integer.parseInt( vars.get("party_id") ); vars.putObject("id", new Integer(id));

然后在 JDBC Request 中使用 id:

    select * from table where column = ? 
    Parameter Value: ${id}
    parameter Type: NUMBER

似乎忽略了 JDBC 请求,结果树中没有显示任何输出。

请帮助调查问题...

提前致谢

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    用户定义变量存储String 的值,但不存储Integer。我想知道 JMeter 控制台(日志)中是否有任何错误/警告。

    将整数转换为字符串以将其放入 UDV。

    如果您希望它是一个整数,只需指定 ${UDV}。如果您希望在 SQL 查询中将其作为 varchar,请添加引号 ('$UDV')

    【讨论】:

    • 我还将调试采样器添加到测试计划中,变量“id”具有结果树中显示的值。从日志文件中观察问题“jmeter.threads.JMeterThread: Error while processing sampler 'try integer': java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String”。您知道如何获取其他采样器中使用的整数变量吗?
    • 当您使用putObject 方法时,只需使用toString() 方法将整数转换为字符串。 vars.putObject("id", id.toString());
    • 如果我使用字符串,它适用于我的选择语句,我可以将类型更改为 varchar。对于一个 jdbc 请求所需的数字参数,我有一个插入语句。当我传递“$ {id}”时,如果将其转换为字符串则不起作用。
    • 我不确定我是否有您的选择。如果您有选择查询,则将其写为select * from table where condition = ${id}。假设你的变量值为 5(它是字符串,因为用户定义的变量只存储字符串)下一个查询将被执行select * from table where condition = 5。如果您在 SQL 查询中需要 varchar,您可以编写 select * from table where condition = '${id}' 并且 next 将执行 select * from table where condition = '5'。 JMeter HTTP 或 JDBC 采样器以下一种方式处理 ${variable}:只需从变量中获取文本并将其放入采样器主体。这是答案吗?
    • 感谢您提供详细信息。方法 vars.putObject 可以为用户定义的变量存储任何类型的对象,例如整数。我想知道是否有某种方法可以获取类型不是字符串的变量。我使用 JSR223 采样器中定义的变量存储整数,在一个 jdbc 请求中有一个插入查询 [insert into table (id number) values (${id})] 所需的整数。正如您所提到的,${id} 类型是字符串,有什么方法可以转换为整数?
    【解决方案2】:

    已重现您的问题,看起来JDBC Sampler 不接受整数,只接受字符串。

    我在 jmeter.log 中遇到以下错误,你也猜到了:

    2014/01/04 11:30:14 错误 - jmeter.threads.JMeterThread:错误同时 处理采样器“JDBC 请求”:java.lang.ClassCastException: java.lang.Integer 不能转换为 java.lang.String

    因此,您绝对不需要强制转换为整数。尝试将您的 JSR223 代码更改为以下内容:

    vars.put("id", vars.get("party_id")); 
    

    它应该可以正常工作。

    告诉 MySQL 将变量绑定到哪个数据类型的位是 ParameterType 节。您需要在那里指定参数类型,而不是在 JSR223 中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多