前言
現在很多接口的登錄是返回一個json數據,token值在返回的json里面,在jmeter里面也可以直接提取json里面的值。
上一個接口返回的token作為下個接口的入參。
案例場景
我現在有一個登陸接口A,登陸成功后返回一個token值。有一個獲取綁定卡號的接口B,但是接口B必須要先登錄后傳登錄的token才能訪問
A接口登錄接口文檔基本信息
- 訪問地址:http://127.0.0.1:8000/api/v1/login/
- 請求類型:POST
- 請求頭部:application/json
- 請求參數:{"username":"test", "password":"123456"}
A接口的請求和返回的報文信息如下
D:\>http http://127.0.0.1:8000/api/v1/login/ username=test password=123456 -v POST /api/v1/login/ HTTP/1.1 Accept: application/json, */* Accept-Encoding: gzip, deflate Connection: keep-alive Content-Length: 42 Content-Type: application/json Host: 127.0.0.1:8000 User-Agent: HTTPie/1.0.3 { "password": "123456", "username": "test" } HTTP/1.1 200 OK Allow: POST, OPTIONS Content-Length: 109 Content-Type: application/json Date: Sat, 21 Sep 2019 15:37:06 GMT Server: WSGIServer/0.2 CPython/3.6.0 Vary: Accept, Cookie X-Frame-Options: SAMEORIGIN { "code": 0, "msg": "login success!", "token": "234af73571da46ade79ea6a74961b1d23d609b79", "username": "test" }
B接口獲取綁定卡號的接口文檔基本信息
- 訪問地址:http://127.0.0.1:8000/api/v1/user/info/
- 請求類型:GET
- 請求頭部:Content-Type: application/json
- 請求頭部token參數: Authorization: Token xxxxx login token xxxxx
登錄請求
先在jmeter里面添加http請求,填登錄接口的參數
HTTP信息頭管理器添加post請求類型:Content-Type: application/json
運行之后查看結果數,可以看到正確的返回我們想要的token值
Json 提取器
添加后置處理器-Json提取器
從返回的結果中提取token值
返回的結果
{
"code": 0, "msg": "login success!", "token": "234af73571da46ade79ea6a74961b1d23d609b79", "username": "test" }
JSON提取器參數說明:
- Names of created variables 參數名稱
- JSON Path expressions 提取表達式
- Match No.(0 for Random) 匹配規則,-1所有,0隨機,1第一個
- Compute concatenation va 如果有匹配到多個值,選擇此項,會將全部值保存到_ALL,並使用逗號分割每個值,注意Match No. (0 for Random)需要為-1才有效,不然只能匹配到一個值了
- Default Values 沒提取到就給默認值
關聯請求
下個請求頭部需要用到上面的token值
添加頭部管理器,引用token參數 ${token}
查看結果,請求頭部關聯參數成功
查看響應結果也能正確的返回
遇到的坑
參數關聯的時候,遇到一個坑,請求的參數都對,但是報錯:
Response code: Non HTTP response code: org.apache.http.NoHttpResponseException
后來查資料,需要把第一個請求的的客戶端實現用JAVA方式實現,才能正常的關聯成功
Jmeter之Json Path Extractor的使用(Json-handle下載安裝和使用)
jp@gc - JSON Path Extractor和“正則表達式提取器”使用效果一樣。
他的作用單一,只提取json數據
jp@gc - JSON Path Extracto
變量名自己定義,json數據路徑,可通過“JSON-handle”獲取
JSON-handle
JSON-handle是一款對JSON格式的內容進行瀏覽和編輯,以樹形圖樣式展現JSON文檔,並可實時編輯。
1.下載JSON-Handle:http://jsonhandle.sinaapp.com/
2.打開Chrome的擴展程序頁,將下載的crx文件拖入
3.使用
點擊瀏覽器上的小圖標,即可使用
復制jmeter響應數據(json字串)到工具中,點擊ok
點擊右上角的按鈕
出現彈窗后,點擊需提取的數據,這個數據的json路徑就獲取到了。
復制JSON.result[0].pic到jmeter中,並將JSON修改為$
運行結果