性能测试(05)-表达式和业务关联-json关联
生活随笔
收集整理的這篇文章主要介紹了
性能测试(05)-表达式和业务关联-json关联
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.使用場景
在對返回結果較復雜且為json結構的HTTP請求進行提取某一個值,以用作其他接口使用或者用來斷言的等。
2.使用
添加步驟:選擇線程組中的HTTP請求——右鍵“添加”——后置處理器——JSON Extractor
先來一個免費的API網站:API Shop,專業的數據交易平臺 | API免費調用,行業數據下載,數據定制
到時候,一般的測試數據,我們就直接從這個網站中獲取就好。
?
{"result": {"area": "廣州","areaCode": "440100","areaid": "101280101","dayList": [{"area": "廣州","night_wind_direction": "東北風","night_air_temperature": "13","night_weather_pic": "http:\/\/app1.showapi.com\/weather\/icon\/night\/07.png","day_weather_code": "01","night_weather": "小雨","night_weather_code": "07","day_weather": "多云","day_wind_power": "0-3級","day_air_temperature": "18","day_weather_pic": "http:\/\/app1.showapi.com\/weather\/icon\/day\/01.png","day_wind_direction": "東北風","areaCode": "440100","areaid": "101280101","night_wind_power": "3-4級","daytime": "20211219"},{"area": "廣州","night_wind_direction": "東北風","night_air_temperature": "12","night_weather_pic": "http:\/\/app1.showapi.com\/weather\/icon\/night\/21.png","day_weather_code": "07","night_weather": "小到中雨","night_weather_code": "21","day_weather": "小雨","day_wind_power": "3-4級","day_air_temperature": "15","day_weather_pic": "http:\/\/app1.showapi.com\/weather\/icon\/day\/07.png","day_wind_direction": "東北風","areaCode": "440100","areaid": "101280101","night_wind_power": "3-4級","daytime": "20211220"}],"ret_code": 0},"statusCode": "000000","desc": "請求成功" }?接著我們就創建一個JSON提取器。
?參數說明:
Variable names(名稱):提取器的名稱
Apply to(應用范圍):
Main sample and sub-samples:應用于主sample及子sample。Main sample only:默認的是這個,應用于主sample。Sub-samples only:應用于子sample。JMeter Variable :應用于變量命名的內容。Variable names:保存的變量名,后面使用${Variable names}引用。
JSON Path? expressions:上一步中調試通過的json path表達式。
Match Numbers:匹配數字(0代表隨機,1代表第一個,-1代表所有)。
Default Values:找不到時默認值,一般設置為NOT FOUND。
Compute concatenation var(suffix_ALL):是否統計所有,即將匹配到的所有值保存,名為“變量名_ALL”,使用場景需要獲取的值有多個,后面需要對這一組數據進行操作。
特別注意:
當json提取器要提取兩個值(或兩個以上)的時候,一定要填寫默認值,不然會報錯 “Mismatch between number of variables, json expressions and default values” ; 反之:只提取兩個值,默認值填了三個,也會報該錯。3.JSON Path? expressions中的參數詳細
| JsonPath | 描述 |
| $ | 根節點 |
| @ | 當前節點 |
| .or[] | 子節點 |
| .. | 選擇所有符合條件的節點 |
| * | 所有節點 |
| [] | 迭代器標示,如數組下標 |
| [,] | 支持迭代器中做多選 |
| [start:end:step] | 數組切片運算符 |
| ?() | 支持過濾操作 |
| () | 支持表達式計算 |
4.配置
5.結果?
?6.獲取上一個請求結果進行請求
?
7.?jsonpath 語法
?$..Name:列出所有省份
$..Province[0].Name 提取 Province 中第一個 list 中的 Name $..[?(@.Name=='Beijing')] 篩選出省份名為 Beijing 的所有 list 數據 $.Province[:2].population 篩選前兩條數據 $.Province[2].population 排除前兩條數據 $.Province[-2].population 排除后兩條數據 取所cabinInfos列表下,patFlag=Y時的cabin,standardPrice和finallyPrice。 $..[?(@.patFlag=="Y")].["cabin","standardPrice","finallyPrice"]8.Json 取多個變量
JSON Extractor 使用 json path 表達式匹配,可以一次取多個變量 例子:提取前兩個 list 里面的 Name 添加 JSON Extractor,分號間隔多個參數;分號分隔多個 json 表達式;分號分隔多個匹配數字;分號分隔多個默認值(必填)?也可以用表達式匹配所有值,然后用 match no 獲取想要的值
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的性能测试(05)-表达式和业务关联-json关联的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 性能测试(04)-表达式和业务关联-JD
- 下一篇: 性能测试(06)-逻辑控制器