Jmeter属性获取/放置问题

时间:2016-10-24 21:25:35

标签: jmeter

我有以下流程,

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值?

3 个答案:

答案 0 :(得分:0)

当您运行由-Jx追加的测试时,您需要从命令行传递该值。

因此,当您运行测试时,从命令行传递X的值

-JPropertyName=ProperyValue

这将取值为10。

答案 1 :(得分:0)

设置属性应为

props.put("x","10");

即。它需要String格式的值,函数应为put,而不是set

答案 2 :(得分:0)

在JMeter启动期间正在初始化线程组,因此您无法以这种方式设置线程组中的线程数。您有两个选择:

  1. user.properties 文件中设置属性值(位于JMeter安装的“bin”文件夹中),如

    x=10
    
  2. 传递属性值-J-D命令行参数,如

    jmeter -Jx=10 -n -t .... 
    
    jmeter -Dx=10 -n -t ...
    
  3. 由于JMeter中的错误,__P()函数返回的默认值永远为1(如果需要,可以通过JMeter Issue Tracker报告),其默认值为是一个空字符串。如果您希望__P() function返回1作为默认值,则应使用${__P(x,1)}

    有关使用JMeter属性,设置和覆盖它们的方法等的更多信息,请参阅Apache JMeter Properties Customization Guide指南。

    虽然您无法动态更改线程数,但您可以通过Constant Throughput Timer控制采样器的执行频率。这样,您可以使用__P()函数设置所需的吞吐率(以每分钟请求数为单位),即使在JMeter脚本之外,您也可以动态更改关联的属性值。