jmeter将命令行变量传递给jmx

时间:2013-11-06 22:15:19

标签: variables jmeter jmx

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

  

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

并让foo.jmx选择testingIP

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

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

4 个答案:

答案 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)

  1. 在Jmeter GUI中打开 Jmeter 文件(jmx),并在此屏幕截图中添加参数:

enter image description here 点击保存按钮。

  1. 现在,运行带有以下参数的命令,例如:

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