jmeter 用非GUI执行时,需要修改参数,可以用命令 -J实现

一、在linux中,使用非gui的方式执行jmeter。若需更改参数,必须先编辑jmx文件,找到对应的变量进行修改,比较麻烦。因此,可以参数化一些常用的变量,直接在Jmeter命令行进行设置

 

二、参数 -J 和 -G

1、格式:-J变量名=值  -G变量名=值

2、相同之处:设置jmeter属性,例如线程数、循环次数、ramp up-time等

3、不同之处:-J是设置本地jmeter属性;-G是设置server的jmeter属性(只有设置了远程机,开启了远程服务,才需要用到-G)

 

-J, --jmeterproperty <argument>=<value>
Define additional JMeter properties

当通过JMeter属性的方法调用变量时,需要修改变量的传入方式。普通的定义变量是:${threadsUsers}的形式。

但是本方法是通过添加JMeter的属性,属性和参数是不同的,因此在调用中采用${__P(threadsUsers)}的形式进行调用。(注意是两个下划线

这样就可以完成通过命令行的参数,来达到更改脚本中变量的效果了!

 

三、以设置本地jmeter属性为例,先在windows下编辑脚本,将线程数、循环次数、ramp up-time等参数化

1、添加用户自定义变量(添加变量的具体方法请参考Jmeter添加变量的四种方法

定义三个变量和变量对应的默认值,例如${__P(threadNum,1)},表示变量threadNum的默认值为1

2、引用用户自定义变量,将线程属性和用户自定义变量关联起来

3、运行脚本,验证变量是否设置成功

两个样本请求的线程数都为1,说明设置成功(自定义变量中,变量的默认值都为1)

四、保存脚本,上传到linux中

1)执行命令:jmeter -n -t httptest.jmx -l log_httptest.jtl -JthreadNum=100 -JloopNum=10 -JrampupTime=10 

2)将log_httptest.jtl文件传到windows下,查看结果

 3)再次运行脚本时,无需编辑脚本,只需要在执行命令中更改threadNum、loopNum和rampupTime的值,即可修改线程属性

 

这个过程中存在一些问题:

一直按enter 键,样本数会翻倍增加 ??  应该是系统的BUG

 

所有命令行选项:

-h, --help
print usage information and exit
         #打印帮助信息 
-v, --version
print the version information and exit
          #打印版本信息
-p, --propfile {argument}
the jmeter property file to use
          #运行时指定property文件,默认是使用JMETER_HOME/bin目录下的jmeter.properties,如果用户自定义有其它的配置,在这里加上
          #用法如下: -p user.properties
-q, --addprop {argument}
additional property file(s)
          #其它配置文件,如JVM参数等等
-t, --testfile {argument}
the jmeter test(.jmx) file to run
         #要运行的jmeter脚本
-j, --jmeterlogfile {argument}
the jmeter log file
         #指定记录jmeter log的文件,默认为jmeter.log
-l, --logfile {argument}
the file to log samples to
         #记录采样器Log的文件
-n, --nongui
run JMeter in nongui mode
         #以nongui模式运行jmeter
-s, --server
run the JMeter server
         #运行JMeter server
-H, --proxyHost {argument}
Set a proxy server for JMeter to use
         #代理服务器地址
-P, --proxyPort {argument}
Set proxy server port for JMeter to use
         #代理服务器端口
-u, --username {argument}
Set username for proxy server that JMeter is to use
         #代理服务器的用户名
-a, --password {argument}
Set password for proxy server that JMeter is to use
         #代理服务器用户名对应的密码
-J, --jmeterproperty {argument}={value}
Define additional JMeter properties
         #定义额外的Jmeter属性
-G, --globalproperty (argument)[=(value)]
Define Global properties (sent to servers)
e.g. -Gport=123
or -Gglobal.properties
          #定义发送给server的全局属性
         #如:-Gport=123 或者-Gglobal.properties(指定监听server的端口)
-D, --systemproperty {argument}={value}
Define additional System properties
         #定义系统属性
-S, --systemPropertyFile {filename}
a property file to be added as System properties
         #通过指定的property文件定义系统属性
-L, --loglevel {argument}={value}
Define loglevel: [category=]level 
e.g. jorphan=INFO or jmeter.util=DEBUG
         #定义日志等级
-r, --runremote (non-GUI only)
Start remote servers (as defined by the jmeter property remote_hosts)
         #启动远程server(在jmeter property中定义好的remote_hosts),公在non-gui模式下此参数才生效
-R, --remotestart server1,... (non-GUI only)
Start these remote servers (overrides remote_hosts)
         #启动远程server(如果使用此参数,将会忽略jmeter property中定义的remote_hosts)
-d, --homedir {argument}
the jmeter home directory to use
              #Jmeter运行的主目录
-X, --remoteexit
Exit the remote servers at end of test (non-GUI)
         #测试结束时,退出(在non-gui模式下)

posted @ 2020-05-09 14:52  pretend_smile  阅读(1414)  评论(0)    收藏  举报