JMeter 线程编号 __threadNum 获取不到
场景:
在 BeanShell PreProcessor 中,使用 vars.get("__threadNum") 获取不到当前线程数,如:
import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.engine.util.CompoundVariable; // 获取当前线程编号 String threadNum = JMeterUtils.getPropDefault("__threadNum", "0"); System.out.println("Current Thread Number: " + threadNum);
// 直接引用内置函数 String threadNum = org.apache.jmeter.functions. __BeanShellFunction.evaluate("${__threadNum}"); System.out.println("Current Thread Number: " + threadNum);
String threadNum = vars.get("__threadNum"); // 直接获取内置变量的值。这种方式在现代JMeter版本中通常不是最佳实践。
System.out.println("Current Thread Number: " + threadNum); // 这将输出线程编号。
String threadNum = vars.get("${__threadNum}"); // 更推荐使用这种方式。
System.out.println("Current Thread Number: " + threadNum); // 这将输出线程编号。
尝试直接在请求入参中直接使用 {__threadNum} 是可以获取到正确的值的。
处理:
在 HTTP Request 新增一个 User Parameter , 新增一个参数:threadNum - {__threadNum} 在保存线程编号;
再在 BeanShell PreProcessor 中,通过
int threadNum = Integer.parseInt(vars.get("threadNum"));
就可以正常获取到了。


浙公网安备 33010602011771号