jmeter将命令行变量传递给jmx

Geo*_*ian 31 variables jmx jmeter

我正在尝试自动化一些性能测试.我将服务器位置从Jenkins作业传递到通用jmx.我希望能够做到这样的事情:

jmeter -n -t foo.jmx -JtestingIP = IP

并让foo.jmx接听testingIP.

这样做的正确方法是什么?当我运行该jmeter命令时,它表示该变量已被存储,但是插入${testingIP}${\_\_P(testingIP,)}移入jmx会导致${testingIP}或被${\_\_P(testingIP,)}解释为只是一个字符串.

我做错了什么/什么都不做?这甚至可能吗?

小智 55

您需要做的就是使用-J选项从命令行(或shell)启动JMeter .例如 :

-JTestIP = 10.0.0.1

在你的脚本中,要获取值,只需使用函数_P:

例:

${__P(TestIP)}
Run Code Online (Sandbox Code Playgroud)

应该这样做.

请注意,如果您运行脚本而不传递JMeter属性,则应该设置默认值,如:

$ {__ P(TestIP,1.1.1.1)}


oly*_*lyv 11

请查看此链接http://mkbansal.wordpress.com/2012/08/01/jmeter-command-line-script-execution-with-arguments/.另外,我会尝试指定默认值,例如${__P(testingFromCommandLineIP,defaultIP)}where testingFromCommandLineIP- 从命令行运行测试计划时指定的参数,defaultIP- 默认值


Gav*_*hen 9

  1. 在 Jmeter GUI 中打开Jmeter文件 (jmx) 并添加参数,如下图所示:

在此处输入图片说明 单击“保存”按钮。

  1. 现在,使用此参数运行命令,例如:

    jmeter -t TestPlan.jmx -Jthreads=10 -Jcount=50 -Jrumpup=5 
    
    Run Code Online (Sandbox Code Playgroud)


Bil*_*mir 5

您有两个选项可以将参数发送到 jmeter。

首先:设置系统属性值。

-Dproperty=value
Run Code Online (Sandbox Code Playgroud)

如果 value 是包含空格的字符串,则必须将该字符串括在双引号中。

例子

java -Dmydir="some string" -jar ApacheJmeter.jar -n -t PerformanceTest.jmx 
Run Code Online (Sandbox Code Playgroud)

读取jsr223 beanshell中的参数:

log.info("mydir:" + System.getProperty("mydir"));
Run Code Online (Sandbox Code Playgroud)

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

${__BeanShell(System.getProperty("mydir"))}
Run Code Online (Sandbox Code Playgroud)

第二:定义本地 JMeter 属性

-J[prop_name]=[value]
Run Code Online (Sandbox Code Playgroud)

例子

jmeter -n -t PerformanceTest.jmx -Jmyparamter=4 -Jduration=300
Run Code Online (Sandbox Code Playgroud)

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

${__P(duration)}
Run Code Online (Sandbox Code Playgroud)