我正在尝试自动化一些性能测试。我将服务器位置从Jenkins作业传递到通用jmx。我希望能够做到这样的事情:
jmeter -n -t foo.jmx -JtestingIP = IP
并让foo.jmx选择testingIP
。
这样做的正确方法是什么?当我运行该jmeter命令时,它表示该变量已被存储,但是将${testingIP}
或${\_\_P(testingIP,)}
插入jmx会导致${testingIP}
或${\_\_P(testingIP,)}
被解释为只是一个字符串。
我做错了什么/什么都没做?这甚至可能吗?
答案 0 :(得分:52)
您需要做的就是使用 -J 选项从命令行(或shell)启动JMeter。 例如:
-JTestIP = 10.0.0.1
在你的脚本中,要获取值,只需使用函数 _P :
示例:
${__P(TestIP)}
应该这样做。
请注意,如果您在不传递JMeter属性的情况下运行脚本,则应设置默认值,如:
$ {__ P(TestIP,1.1.1.1)}
答案 1 :(得分:11)
请看一下此链接http://mkbansal.wordpress.com/2012/08/01/jmeter-command-line-script-execution-with-arguments/。另外我会尝试指定默认值,例如${__P(testingFromCommandLineIP,defaultIP)}
其中testingFromCommandLineIP
- 从命令行运行测试计划时指定的参数defaultIP
- 默认值
答案 2 :(得分:2)
现在,运行带有以下参数的命令,例如:
jmeter -t TestPlan.jmx -Jthreads=10 -Jcount=50 -Jrumpup=5
答案 3 :(得分:2)
您有两个选项可以将参数发送到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"))}
第二:定义本地JMeter属性
-J[prop_name]=[value]
示例:
jmeter -n -t PerformanceTest.jmx -Jmyparamter=4 -Jduration=300
使用Bean Shell函数在请求采样器中读取属性:
${__P(duration)}