Jmeter 提取請求及響應結果並保存到本地文件

 

1.已有一個登錄的HTTP請求-登錄2

2.啓動,查看結果樹

計劃提取請求頭 Connection 的 keep-alive 字段

響應主體:userId 的9786字段

以及響應碼 200

3.正則表達式提取器,提取Connection

正則表達式提取器,提取userId

邊界提取器,提取響應代碼

4.添加beanshell後置處理程序,寫入腳本

FileWriter fstream = new FileWriter("E://jmeter//pk1.csv", true);

BufferedWriter out = new BufferedWriter(fstream);

out.write( vars.get("Connection")+","+"userId" + "," + vars.get("userId") +","+"code" + "," + vars.get("returnCode")+",");

out.write( vars.get("name"));

out.write(System.getProperty("line.separator"));

out.close();

fstream.close(); 

其中:

①   System.getProperty("line.separator")

      這也是換行符,功能和"\n"是一致的,但是此種寫法屏蔽了 Windows和Linux的區別 ,更保險一些.

      https://blog.csdn.net/zhpengfei0915/article/details/20614639

out.write("code" + "," + vars.get("returnCode")+"\n");

+"\n" :也是換行的效果

②  "," 體現在csv文檔中就是向右移一個單元格

5.啓動請求

在目標路徑產生文檔,打開文檔,存在提取的字段

(若已存在文檔,該代碼是可以續寫文檔的,不會覆蓋之前的記錄)

6.可在線程組設置線程數。(即http請求運行幾次)

7.遇到的問題:

① 數據一直寫入失敗,結果是【要檢查的響應字段】選錯了,像提取響應碼 【200】應該選 信息頭

   寫入失敗會導致文件被佔用的情況(文件無法刪除)

② 這邊的username參數,是由csv文件傳參的 Jmeter小試牛刀-參數化

要在代碼裏獲取,應獲取name,而不是username

③ "userId": 9786 後有換行符,空格,} 等等

用邊界提取器提取,右邊界直接輸   } 

結果會導致提取值自帶了換行,導致後一個值換行顯示

之後又嘗試右邊界輸入 \n 等,結果取不到值。。

用正則愉快的取到值了

(雖然邊界提取器適合小白,但正則還是要會一點。。兩個都有其佔優勢的使用場景)

參考教程: https://blog.csdn.net/nielinqi520/article/details/80310806

轉載:https://www.jianshu.com/p/a52ea384cf33