JMeter如何将命令行变量传递到JMX文件中

44
我正在尝试自动化一些性能测试。我想从Jenkins作业中将服务器位置传递到通用jmx中。我希望能够做到以下操作:
jmeter -n -t foo.jmx -JtestingIP=IP
并让foo.jmx获取testingIP。
正确的方法是什么?当我运行jmeter命令时,它会显示变量已被存储,但将${testingIP}或${\_\_P(testingIP,)}插入jmx中会导致${testingIP}或${\_\_P(testingIP,)}被解释为字符串。
我做错了什么/根本没有做什么?这是可能的吗?
4个回答

80

您只需要从命令行(或shell)启动JMeter,并使用-J选项。

例如:

-JTestIP=10.0.0.1

在您的脚本中,为了获取该值,只需使用函数_P

示例:

${__P(TestIP)}

应该就这样了。

请注意,在运行脚本时如果没有传递该JMeter属性,则应设置默认值,例如:

${__P(TestIP,1.1.1.1)}


1
适用于jmeter 3.0。谢谢! - Bruno Bieri
它对我有效。我正在使用Jmeter Java 1.0。 - Gunjan Shah

14
打开Jmeter GUI中的Jmeter文件(jmx),并按照此截图中的参数进行添加: enter image description here 点击保存按钮。
  • 现在,使用这些参数运行命令,例如:

    jmeter -t TestPlan.jmx -Jthreads=10 -Jcount=50 -Jrumpup=5 
    

  • 11

    5
    您有两种方式将参数发送给JMeter。
    第一种:设置系统属性值。
    -Dproperty=value
    

    如果 value 是一个包含空格的字符串,则必须用双引号将该字符串括起来。

    示例:

    java -Dmydir="some string" -jar ApacheJmeter.jar -n -t PerformanceTest.jmx 
    

    在jsr223 beanshell中读取参数:
    log.info("mydir:" + System.getProperty("mydir"));
    

    使用Bean Shell函数在请求采样器中读取参数:

    ${__BeanShell(System.getProperty("mydir"))}
    

    Second: 定义本地的 JMeter 属性

    -J[prop_name]=[value]
    

    例子:

    jmeter -n -t PerformanceTest.jmx -Jmyparamter=4 -Jduration=300
    

    使用Bean Shell函数在请求采样器中读取属性:

    ${__P(duration)}
    

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接