没有必要对 Beanshell 预处理器进行任何延迟,因为它是在 请求之前执行的。我建议检查您的 jmeter.log 文件以查看是否存在任何脚本问题,因为 Beanshell 预处理器不会在任何地方报告错误,包括查看结果树侦听器。
至少有两种方法可以确保您的 Beanshell 脚本一切正常:
- 将您的调试打印代码放在变量替换逻辑之后,看看它是否会触发
- 在您的 HTTP 请求中直接使用 JMeter __Beahshell 函数。如果没问题 - 查看结果树将展示 beanshell 生成的值。如果不是 - 该字段将为空白,并且相关错误将显示在日志中。
示例测试用例:
鉴于以下测试计划结构:
- 具有 1 个用户和 1 个循环的线程组
- 使用路径 / 和参数 q 向 google.com 发出 HTTP GET 请求
如果您在 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));
希望这会有所帮助。