我正在尝试自动化一些性能测试。我会将服务器位置从 Jenkins 作业传递到通用 jmx 中。我希望能够做这样的事情:
jmeter -n -t foo.jmx -JtestingIP=IP
并让 foo.jmx 拿起
testingIP
。
执行此操作的正确方法是什么?当我运行 jmeter 命令时,它表示变量已被存储,但是将
${testingIP}
或 ${\_\_P(testingIP,)}
插入 jmx 会导致 ${testingIP}
或 ${\_\_P(testingIP,)}
被解释为字符串。
我做错了什么/根本没做什么?这可能吗?
您所需要做的就是使用 -J 选项从命令行(或 shell)启动 JMeter。 例如:
-JTestIP=10.0.0.1
在您的脚本中,要获取值,只需使用函数 _P:
示例:
${__P(TestIP)}
应该可以了。
注意,您应该设置一个默认值,以防您运行脚本而不传递 JMeter 属性,例如:
${__P(测试IP,1.1.1.1)}
看看这个链接http://mkbansal.wordpress.com/2012/08/01/jmeter-command-line-script-execution-with-arguments/。另外,我会尝试指定默认值,例如
${__P(testingFromCommandLineIP,defaultIP)}
其中 testingFromCommandLineIP
- 从命令行运行测试计划时指定的参数,defaultIP
- 默认值
您有两种选项可以将参数发送到 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)}
如何参数化用户名和密码?