如果你想從頭學習Jmeter,可以看看這個系列的文章哦
https://www.cnblogs.com/poloyy/category/1746599.html
拋出問題
- 上一篇文章中詳細講解了 CSV 數據文件設置的用法:https://www.cnblogs.com/poloyy
- 通常,我們編寫、調試腳本都是在 Window 機器上,而真正性能測試時,腳本幾乎都在 Linux 下運行
- 使用 CSV 數據文件做參數化時,是需要指定文件路徑的
- 這里就有個問題:Window 下寫的文件路徑到了 Linux 下是不正確的,導致無法正常讀取 CSV 文件
- 為了解決這個問題,下面將要講解一個簡單的萬能解決方法
兩個前提
- 我們的 CSV 文件必須在 Jmeter 的 bin 目錄下創建,然后再添加自己要的數據
- Jmeter 必須從 bin 目錄下啟動,不能通過 cmd,否則會有問題(下面說)
具體方法
CSV 數據文件設置直接按下面的格式寫
這樣就可以了,只要把 CSV 文件上傳到 Linux 系統 Jmeter 下的 bin 目錄,這個腳本就可以跨平台執行了
實現跨平台的原理
__P() 函數
用來獲取 Jmeter 的屬性,那我們怎么知道 Jmeter 有什么屬性呢?
如何查看 Jmeter 屬性
測試計划右鍵添加
Window 下查看屬性 user.dir,file.separator
可以看到
- file.separator 的值是 \ ,這也是 Window 特有的路徑分隔符
- user.dir 的值是 Jmeter 安裝路徑下的 bin 目錄
如果通過 cmd 運行 Jmeter,那么 user.dir 又會顯示什么呢?
看到並不是顯示 Jmeter 的 bin 目錄,這不是我們想要的結果;所以請記住需要在 bin 目錄下啟動 Jmeter
Linux 下查看屬性 user.dir,file.separator
可以看到
- file.separator 的值是 / ,這也是 Linux 的路徑分隔符
- user.dir 的值是 Jmeter 安裝路徑下的 bin 目錄,和 Window 的截然不同
總結
- ${__P(user.dir,)}${__P(file.separator,)}test.txt 可以根據不同的系統,不同的 Jmeter 安裝路徑,自動獲取 Jmeter 路徑,然后再獲取不同系統下的文件路徑分隔符,最后加上文件名稱拼成文件路徑
- 這樣就可以解決使用 CSV 數據文件做參數化時,跨平台導致路徑不一致的問題
- 重點前提:CSV 文件放在 Jmeter 的 bin 目錄下,且通過 bin 目錄運行 Jmeter