我在JMeter问题上很新。BeanShell预处理器更新用户定义变量
在测试脚本中,我有一个BeanShell PreProcessor元素,用于更新以前在“用户定义的变量”元素中定义的一些变量。
后者这些变量在“Http Requests”中使用。但是,http请求中使用的值是默认值。
脚本似乎正在工作,由于一些调试打印();
我的问题是,如果有必要延迟脚本以确保BeanShell完成?
非常感谢您的关注
我在JMeter问题上很新。BeanShell预处理器更新用户定义变量
在测试脚本中,我有一个BeanShell PreProcessor元素,用于更新以前在“用户定义的变量”元素中定义的一些变量。
后者这些变量在“Http Requests”中使用。但是,http请求中使用的值是默认值。
脚本似乎正在工作,由于一些调试打印();
我的问题是,如果有必要延迟脚本以确保BeanShell完成?
非常感谢您的关注
没有必要,因为它是被之前要求执行把任何延迟BeanShell的预处理器。我建议您检查jmeter.log文件以查看是否存在任何脚本问题,因为Beanshell预处理器不会在任何位置报告错误,包括查看结果树侦听器。
至少有2种方式,以确保一切都很好,你的BeanShell脚本:
例测试用例:
鉴于以下测试计划结构:
如果在beanshell函数后面提供参数“q”:
${__BeanShell(System.currentTimeMillis())}
,并期待为查看结果树“请求”选项卡中,你应该看到:
GET http://www.google.com/?q=1385206045832
,如果更改功能,像一些不正确的:
${__BeanShell(Something.incorrect())}
你会看到一个空白的请求。
改变现有的变量(或创建新的变量,如果不存在)的正确方法看起来像
vars.put("variablename", "variablevalue");
* 重要提示:* JMeter的变量是Java中的字符串,如果你想设置其他东西(日期,整数,无论)到JMeter变量你需要将其强制转换为字符串。
例子:
int i = 5;
vars.put("int_i", String.valueOf(i));
希望这有助于。
我也是jmeter的新手,但正如我所知,“用户定义变量”中定义的变量是常量,因此您无法更改它们。我建议在预处理器或CSV数据集配置中使用“用户参数”。
您可以更新“用户定义变量”的值。
@theINtoy说得没错。
http://www.blazemeter.com/blog/queen-jmeters-built-componentshow-use-beanshell
确保您定义的变量没有初始值,否则会刷新它在下一次迭代中。 – Armando
这是不正确的。可以使用BeanShell预处理器覆盖用户定义的变量的值。 参见:随时改变JMeter的变量(http://www.blazemeter.com/blog/queen-jmeters-built-componentshow-use-beanshell) 本质: 假设你有一个用户自定义在While循环中某处使用的值为“true”的变量名为“continue”。您可以将它设置为“false”,如下所示: 'vars.put(“counter”,“false”);' – theINtoy