Jmeter之json條件提取實戰(三)

  • 2020 年 2 月 10 日
  • 筆記

之前寫過2篇json提取的文章【Jmeter篇】後置處理器之正則提取器、Json提取器Jmeter之json提取器實戰(二)有時我們想通過接口響應數據中的默寫條件進行提取對應的字段,這時,就可以用到json條件提取,可以提取對應的值進行使用或迭代。

接口請求地址:

sh.lianjia.com/api/newhouserecommend?type=1&query=https%3A%2F%2Fsh.lianjia.com%2Fershoufang%2F%3Futm_source%3Dbaidu%26utm_medium%3Dpinzhuan%26utm_term%3Dbiaoti%26utm_content%3Dbiaotimiaoshu%26utm_campaign%3Dsousuo%26ljref%3Dpc_sem_baidu_ppzq_x  接口響應數據:  {      "errno": 0,      "uniq_id": "010A1A64181308FE356F0175ABDB6D34",      "data": [          {              "outlet_center_tel": "",              "cover_pic": "https://image1.ljcdn.com/hdic-resblock/prod-09d53f11-de84-4cdd-9fe9-e240310e985fphpnmDROp",              "project_name": "zxgcbjbjx",              "project_desc": "品質建築  交通便捷",              "bizcircle_id": "611100121",              "show_price_confirm_time": "0天",              "discount_realpay": "0",              "special_tag": "",              "resblock_alias": "春申大廈",              "price": "41000",              "checkin_start_date": null,              "id": "5020035843156409",              "min_frame_area": "0",              "decoration": "毛坯",              "carRatio": "1:",              "address_remark": "春申路3555號",              "allowance": "0",              "tags": [              ],              "permit_all_ready": "1",              "has_virtual_view": "0",              "property_address": "",              "build_id": "5020035843156409",              "process_status": "3",              "full_spell": "zhongxuguangchang",              "evaluate": [              ],  ……  提取 "decoration": "毛坯"的所有resblock_alias值:  $..data[?(@.decoration=="毛坯")].resblock_alias

提取結果:

Result[0]=春申大廈 Result[1]=塘和家園梔子錦苑,樾山明月 Result[2]=龍茗路商鋪 Result[3]=星月珂匯園.

添加Json提取器提取(放置採樣器下級):

Variable names:test

JSONPath Expression:$..data[?(@.decoration=="毛坯")].resblock_alias

0隨機;n取第幾個匹配值;-1匹配所有,後續引用用 變量名_N 取第N個值

Match Numbers:-1

添加debug採樣器,查看提取結果:

JMeterVariables:

JMeterThread.last_sample_ok=true

JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@77ed38c5

START.HMS=113707

START.MS=1577158627509

START.YMD=20191224

TESTSTART.MS=1577160022883

__jm__線程組__idx=0

__jmeter.U_T__=線程組 1-1

test_1=龍茗路商鋪

test_2=春申大廈

test_3=塘和家園梔子錦苑,樾山明月

test_4=星月珂匯園

test_matchNr=4

如果想使用其中1個提取值,可以用提取變量test拼接第幾個值_幾,如:test_1、test_5進行使用

如果想迭代提取出來的多個值,可以添加ForEach控制器進行迭代,共提取出來4個值,我們迭代4次,設置如下:

.查看結果樹,發現被引用變量的採樣器,最終被迭代了4次