我有以下流程,
Thread Group 1
-JSR223 Sampler - props.put("x",10);
Thread Group 2
Number of threads(users) = ${__P("x")}
我正在设置一个未在任何属性文件中定义为10的属性值。我试图在下一个线程组中使用该值。但是,我只获得了1个线程而不是10个线程。
文档说如果属性未定义,$ {__ P()}将给出1。如何将THread Group 2的线程数设置为x值?
答案 0 :(得分:0)
当您运行由-Jx追加的测试时,您需要从命令行传递该值。
因此,当您运行测试时,从命令行传递X的值
-JPropertyName=ProperyValue
这将取值为10。
答案 1 :(得分:0)
设置属性应为
props.put("x","10");
即。它需要String
格式的值,函数应为put
,而不是set
。
答案 2 :(得分:0)
在JMeter启动期间正在初始化线程组,因此您无法以这种方式设置线程组中的线程数。您有两个选择:
在 user.properties 文件中设置属性值(位于JMeter安装的“bin”文件夹中),如
x=10
传递属性值-J
或-D
命令行参数,如
jmeter -Jx=10 -n -t ....
jmeter -Dx=10 -n -t ...
由于JMeter中的错误,__P()函数返回的默认值永远为1(如果需要,可以通过JMeter Issue Tracker报告),其默认值为是一个空字符串。如果您希望__P() function返回1作为默认值,则应使用${__P(x,1)}
有关使用JMeter属性,设置和覆盖它们的方法等的更多信息,请参阅Apache JMeter Properties Customization Guide指南。
虽然您无法动态更改线程数,但您可以通过Constant Throughput Timer控制采样器的执行频率。这样,您可以使用__P()函数设置所需的吞吐率(以每分钟请求数为单位),即使在JMeter脚本之外,您也可以动态更改关联的属性值。