41

我正在尝试自动化一些性能测试。我想从 Jenkins 工作中将服务器位置传递给通用 jmx。我希望能够做类似的事情:

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

并让 foo.jmx 拿起testingIP

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

我在做什么错/根本没有做什么?这甚至可能吗?

4

4 回答 4

72

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

-JTestIP=10.0.0.1

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

例子:

${__P(TestIP)}

那应该这样做。

请注意,如果您在不传递 JMeter 属性的情况下运行脚本,则应设置默认值,例如:

${__P(TestIP,1.1.1.1)}

于 2013-11-07T07:49:19.237 回答
11

看看这个链接http://mkbansal.wordpress.com/2012/08/01/jmeter-command-line-script-execution-with-arguments/。另外我会尝试指定默认值,比如${__P(testingFromCommandLineIP,defaultIP)}where testingFromCommandLineIP-- 你从命令行运行测试计划时指定的参数,defaultIP-- 默认值

于 2013-11-07T07:45:21.150 回答
9
  1. 在 Jmeter GUI 中打开Jmeter文件 (jmx) 并添加参数,如下图所示:

在此处输入图像描述 点击保存按钮。

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

    jmeter -t TestPlan.jmx -Jthreads=10 -Jcount=50 -Jrumpup=5 
    
于 2019-01-15T10:17:13.657 回答
3

您有两个选项可以将参数发送到 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)}
于 2020-03-26T13:26:40.287 回答