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:
例:
Run Code Online (Sandbox Code Playgroud)${__P(TestIP)}
应该这样做.
请注意,如果您运行脚本而不传递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- 默认值
现在,使用此参数运行命令,例如:
jmeter -t TestPlan.jmx -Jthreads=10 -Jcount=50 -Jrumpup=5
Run Code Online (Sandbox Code Playgroud)您有两个选项可以将参数发送到 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)