jmeter壓測學習3-提取json數據里面的token參數關聯


前言

現在很多接口的登錄是返回一個json數據,token值在返回的json里面,在jmeter里面也可以直接提取json里面的值。
上一個接口返回的token作為下個接口的入參。

案例場景

我現在有一個登陸接口A,登陸成功后返回一個token值。有一個獲取綁定卡號的接口B,但是接口B必須要先登錄后傳登錄的token才能訪問
A接口登錄接口文檔基本信息

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接口獲取綁定卡號的接口文檔基本信息

登錄請求

先在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方式實現,才能正常的關聯成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM