jmeter 将命令行变量传递到 jmx

问题描述 投票:0回答:5

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

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

并让 foo.jmx 拿起

testingIP

执行此操作的正确方法是什么?当我运行 jmeter 命令时,它表示变量已被存储,但是将

${testingIP}
${\_\_P(testingIP,)}
插入 jmx 会导致
${testingIP}
${\_\_P(testingIP,)}
被解释为字符串。

我做错了什么/根本没做什么?这可能吗?

variables jmeter jmx
5个回答
80
投票

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

-JTestIP=10.0.0.1

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

示例:

${__P(TestIP)}

应该可以了。

注意,您应该设置一个默认值,以防您运行脚本而不传递 JMeter 属性,例如:

${__P(测试IP,1.1.1.1)}


14
投票
  1. 在 Jmeter GUI 中打开 Jmeter 文件 (jmx) 并添加参数,如以下屏幕截图所示:

单击保存按钮。

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

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

11
投票

看看这个链接http://mkbansal.wordpress.com/2012/08/01/jmeter-command-line-script-execution-with-arguments/。另外,我会尝试指定默认值,例如

${__P(testingFromCommandLineIP,defaultIP)}
其中
testingFromCommandLineIP
- 从命令行运行测试计划时指定的参数,
defaultIP
- 默认值


5
投票

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

First:设置系统属性值。

-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"))}

第二:定义本地 JMeter 属性

-J[prop_name]=[value]

示例

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

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

${__P(duration)}

0
投票

如何参数化用户名和密码?

© www.soinside.com 2019 - 2024. All rights reserved.