Jmeter接口測試,怎麼在下一個接口調用上一個接口的數據

經常使用的兩種方式,第二種容易上手
一、使用正則提取器html

jmeter 如何將上一個請求的結果做爲下一個請求的參數——使用正則提取器http://www.cnblogs.com/0201zcr/p/5089620.html

一、簡介java

  Apache JMeter是Apache組織開發的基於Java的 壓力測試工具。用於對軟件作壓力測試,它最初被設計用於Web應用測試但後來擴展到其餘測試領域。 它能夠用於測試靜態和動態資源例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫, FTP 服務器, 等等。JMeter 能夠用於對服務器、網絡或對象模擬巨大的負載,來自不一樣壓力類別下測試它們的強度和分析總體性能。另外,JMeter可以對應用程序作功能/迴歸測試,經過建立帶有斷言的腳原本驗證你的程序返回了你指望的結果。爲了最大限度的靈活性,JMeter容許使用正則表達式建立斷言。
  Apache jmeter 能夠用於對靜態的和動態的資源(文件,Servlet,Perl腳本,java 對象,數據庫和查詢,FTP服務器等等)的性能進行測試。它能夠用於對服務器,網絡 或對象模擬繁重的負載來測試它們的強度或分析不一樣壓力類型下的總體性能。你可使用它作性能的圖形分析或在大併發負載測試你的服務器/腳本/對象。
二、用途
1.可以對HTTP和FTP服務器進行壓力和性能測試, 也能夠對任何數據庫進行一樣的測試(經過JDBC)。
2.徹底的可移植性和100% 純java。
3.徹底 Swing 和輕量組件支持(預編譯的JAR使用 javax.swing.*)包。
4.徹底多線程 框架容許經過多個線程併發取樣和 經過單獨的線程組對不一樣的功能同時取樣。
5.精心的GUI設計容許快速操做和更精確的計時。
6.緩存和離線分析/回放測試結果。
三、下載、簡單應用
  下載、簡單應用可參照: http://www.cnblogs.com/0201zcr/p/5046193.html
四、如何將上一個請求的結果做爲下一個請求的參數
  在壓力測試的時候,常常要將幾個流程串聯起來才能將程序測試經過。如:我如今用戶首先要登陸,得到我登陸的憑證(tokenId),以後個人請求其餘的資源的時候須要帶上這個憑證。才能識別你是不是合法的用戶。
1)、建立一個線程租

 

 2)、建立一個獲取憑證的請求正則表達式

 

 

3)、建立後置處理器
   JMeter GUI 視圖中右擊該採樣器打開右鍵菜單 -> 添加 -> 後置處理器 -> 正則表達式提取器,打開"正則表達式提取器"會話頁面並編輯其內容以下:
  後置處理器是當這個請求返回後要作得事情,我這裏是要從返回的內容中將咱們要的tokenId獲取出來。這裏使用「 正則表達式提取器」,用正則表達式,將咱們要的內容獲取出來。

 

 4)、正則表達式提取器配置數據庫

 

 

  • 引用名稱是下個請求將要引用到的變量名
  • 正則表達式是提取你想要內容的正則表達式,小括號()表示提取,也就是說對於你想要提取的內容須要用它括起來
  • 模板是使用提取到的第幾個值。由於可能有多個值匹配,因此要使用模板。從 1 開始匹配,依次類推。這裏只有一個,因此填寫 $1$ 便可;
  • 匹配數字表示如何取值。0 表明隨機取值,1 表明所有取值。這裏只有一個,填 1 便可;
  • 缺省值表示參數沒有取到值的話,默認給它的值。通常不填。

這個請求返回的數據以下:json

{"message":"success","statusCode":200,"registerDay":"20","tokenId":"bf1017bc1bb495ae31764b306a3422885f5"}

 

  咱們如今要獲取的是上面這個json字符串中tokenId的值,即   bf1017bc1bb495ae31764b306a3422885f5  。
5)、添加下一個請求
  在這個請求中,咱們要將上面的tokenId做爲一個參數一併發送。
  同上2)、添加一個http請求(線程租右鍵——》添加——》Sampler——》HTTP請求)

 

 

 

 6)、添加查看結果樹數組

 

 7)、執行後,便可經過」查看結果樹「查詢緩存

 

 

 


二、JSON Extractor
JMeter處理responses 的json(http://blog.csdn.net/lluozh2015/article/details/54097449服務器

對於請求1返回的結果,處理之後做爲請求2的參數,JMeter提供了正則表達式提取器網絡

以下:多線程

 

 

這樣也能夠經過正則表達式獲取responses的某個值

可是對於大部分請求返回的結果,都是json,有一個更方便使用的插件:JSON Extractor
不過得首先下載插件 https://jmeter-plugins.org/wiki/JSONPathExtractor/

下載後解壓之後將lib和lib/ext中的jar包放到安裝目錄對應位置,重啓便可

簡單介紹一下該插件怎麼使用

 

 該插件爲:

 

 

Variable names : 名稱 
JSONPath Expression:JSON表達式 
Match Numbers:匹配哪一個,可爲空即默認第一個 
Default Value:未取到值的時候默認值

好比某一請求的返回值爲:{"statusCode":200,"data":{"userId":"4a2cbe616eb74f0d99190af072c8dea6","token":"37e7a9e198186f5a443e50e6138a5bd20bd"}}

這裏由於返回的是json數據,$.data.token,獲取token的值

可是有碰到一個坑 
另一個接口請求返回值爲:{"statusCode":200,"data":[{"code":"407949","id":"aa477ad2085d492a99b877d14343d68d","name":"90一中4545"}]}

一樣,使用$.data.id去提取id的值時,發現獲取到的數據爲空 
原來這個responses 的data爲數組,故應爲 $.data[0].id 提取第1個值

以下:

相關文章
相關標籤/搜索