我都知道.Properties文件一般都為配置文件。我們可以通過在.Properties文件中定義的各類屬性來實現一些特定的配置。例如:語言類型的問題、cookie的問題、輸出日志類型的問題、定義日志級別的問題、編碼問題等等。
在JMeter的bin目錄中,存在多個配置文件(5.0版本):
jmeter.propertiesreportgenerator.propertiessaveservice.propertiessystem.propertiesupgrade.propertiesuser.properties
其中最重要的配置文件是jmeter.properties,jmete.properties是JMeter的核心配置項文件,是JMeter-GUI運行的配置說明文件。
JMeter配置文件官方文檔:https://jmeter.apache.org/usermanual/properties_reference.html
下面對其常用的一些配置項,進行設置與說明。
1、默認語言設置
# language=en
language=zh_CN #簡體中文
功能:設置JMeter-GUI界面的顯示語言。
說明:若沒有設置,則使用JVM(Java虛擬機)設置的Locale語言。
拓展:在Linux中設置JVM的Locale語言:
# 查看locale
[root@localhost ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
# 配置,內容編輯:LANG="zh_CN.UTF-8"
[root@localhost ~]# vi /etc/sysconfig/i18n
[root@localhost ~]# cat !$
cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
注意:此配置項只能在
jmeter.properties文件中設置才有效。
2、配置默認編碼格式
# sampleresult.default.encoding=ISO-8859-1
sampleresult.default.encoding=UTF-8
JMeter-GUI默認編碼格式為ISO-8859-1,防止中文亂碼可以改成UTF-8編碼格式。
3、GUI圖標放大比例設置
JMeter-GUI界面布局的設置,當JMeter以GUI模式運行時,窗口主要由三部分構成:功能區、視圖區、內容區。
如下圖:

GUI圖標放大比例設置:
jmeter.hidpi.mode=true #開啟視網膜模式
jmeter.hidpi.scale.factor=1.2 #將圖標放大1.2倍
4、功能區工具欄圖標大小設置
# 工具欄圖標默認size: 22x22
# 可用size選項: 22x22, 32x32, 48x48
jmeter.toolbar.icons.size=32x32
5、視圖區目錄樹圖標大小設置
# 目錄樹圖標默認size: 19x19
# 可用size選項: 19x19, 24x24, 32x32, 48x48
jmeter.tree.icons.size=24x24
6、內容區編輯字體設置
調整JMeter內容區的編輯字體:
# 默認Hack字體太難看,使用經典的consolas
# 這兩個配置項必須同時設置才有效
jsyntaxtextarea.font.family=consolas
jsyntaxtextarea.font.size=18
7、添加JMeter元素快捷鍵設置
jmeter.properties配置文件中,可以添加JMeter-GUI使用時的快捷鍵,最多支持10個。
提示:
- 在Windows系統上可以使用
Ctrl+0至Ctrl+9。 - 在macOS系統上可以使用
Command+0至Command+9。
gui.quick_0=ThreadGroupGui #新增線程組
gui.quick_1=HttpTestSampleGui #新增HTTP取樣器
gui.quick_2=RegexExtractorGui #新增正則表達式提取器
gui.quick_3=AssertionGui #新增響應斷言
gui.quick_4=ConstantTimerGui #新增常量定時器
gui.quick_5=TestActionGui #新增測試活動
gui.quick_6=JSR223PostProcessor #新增JSR223 后置處理程序
gui.quick_7=JSR223PreProcessor #新增JSR223 預處理程序
gui.quick_8=DebugSampler #新增調試取樣器
gui.quick_9=ViewResultsFullVisualizer #新增察看結果樹
8、捕捉cookie
將Cookie存儲為變量:
# CookieManager.save.cookies=false # 默認
CookieManager.save.cookies=true # 將cookie存儲為變量
9、HTTP Request Post Content-Type設置
在使用JMeter-GUI發送Post請求的時候,若不自己手動添加Content-Type屬性內容,默認則不會添加Content-type的相關信息。
# Should JMeter add to POST request content-type header if missing:
# Content-Type: application/x-www-form-urlencoded
# Was true before version 5.0
post_add_content_type_if_missing=true
說明:
此配置項在JMeter5.0以前默認值為True,在5.0以及之后的版本默認值為False。
故在5.0以后的版本中發送POST請求時,將參數放在
body data(消息體數據)中,且沒有設置Content-Type時,默認會將Content-Type的值設置為text/plain,而不是application/x-www-form-urlencoded。
通過查看JMeter官方文檔和自己的實操,我的理解是:
post_add_content_type_if_missing=true配置項,在POST請求時,如果Content-Type屬性缺失,會自動補全Content-Type: application/x-www-form-urlencoded。
但是經過我的操作,發現配置了post_add_content_type_if_missing=true,在body data(消息體數據)填寫了Json數據,發送請求之后,Content-Type的值依然為text/plain,不知道該配置項是何用處。
所以在之后的實踐操作時,如果在body data(消息體數據)中填寫純文本數據時,還是要依照接口文檔中的要求,手動添加一個HTTP信息頭管理器(配置元件),里面手動配置對應的Content-Type值,這樣操作更為穩妥。
如果文檔中沒有標注,可以按常見的媒體格式類型填寫,如下:
text/html: HTML格式。text/plain:純文本格式。text/xml: XML格式。application/json: JSON數據格式。image/jpeg:jpg圖片格式。
(還有很多,可以自行擴展。)
10、配置遠程主機
我們需要找到remote_hosts屬性,然后按照負載機ip地址:端口號的形式進行配置。
可以配置多個遠程主機,中間用,分隔開,注意全部為英文符號。
remote_hosts=127.0.0.1:8999
11、日志級別設置
從JMeter3.2開始,日志級別不再在jmeter.properties中設置,而是通過log4j2.xml配置文件中,設置日志級別。
<Root level="info">
<AppenderRef ref="jmeter-log" />
<AppenderRef ref="gui-log-event" />
</Root>
將level的值改為對應的日志級別,默認為info,也可以在GUI界面臨時設置日志級別。
log4j2定義了8個級別的日志,優先級從高到低依次為:
OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL。
OFF:用於關閉所有日志記錄。FATAL:指出每個嚴重的錯誤事件將會導致應用程序的退出。ERROR:指出雖然發生錯誤事件,但仍然不影響系統的繼續運行。WARN:表明會出現潛在錯誤的情形。INFO:消息在粗粒度級別上突出強調應用程序的運行過程。DEBUG:指出細粒度信息事件對調試應用程序是非常有幫助的。TRACE:追蹤日志。ALL:用於打開所有日志記錄。
12、總結
官方建議:將需要修改的屬性值,復制粘貼到同目錄下的user.properties 配置文件中,而不要直接在jmeter.properties配置文件中編輯。
好處:當JMeter升級時,可以避免修改的選項需要重新應用。
jmeter.properties配置文件內容如下:

意思表示:JMeter自動加載其他配置文件中的屬性。
