在JMeter中我有一个线程组,我想控制使用jmeter变量运行的线程数。在线程组中,我将线程数设置为${numThreads}
。我有一个安装线程组,它有一个带有以下内容的bean shell采样器(这总是在主测试线程组之前运行):
vars.put("numThreads","5");
如果我在设置线程组中的用户定义变量配置元素中设置numThreads
,它将使用正确数量的线程。但是我想使用我在bean shell采样器中定义的变量来控制它并且它不起作用。我可以看到正在创建变量并且我可以在日志中打印该值但是当我使用bean shell sampler时,线程组没有正确地创建5个线程(它创建0个线程)。我唯一能想到的是它们都创建变量但是用户定义的配置元素可能会将其创建为整数类型?当我调试变量的类型时,无论是否在用户定义的parms config或bean shell sampler中设置,它都显示为字符串。
log.debug(vars.get("numThreads").getClass().getName()); // this prints java.lang.String for both
为什么线程组不能根据bean shell变量创建正确数量的线程?
答案 0 :(得分:4)
好的我明白了。看起来变量是特定于线程的,并且属性对整个测试是全局的。因此,当我的主线程组启动时,在设置线程组中设置变量超出了范围。现在我在setupgroup beanshell中设置一个属性,并在主线程组中使用以下内容:
设置threadgroup beanshell: props.put(" THREADCOUNT"" 3&#34);
在主线程组中,我可以使用以下命令启动正确的线程数: $ {__ P(THREADCOUNT)}
仍然不知道为什么用户定义的变量配置元素正在工作 - 它必须生成属性而不是变量或其他东西。