<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      推薦一款接口自動(dòng)化測(cè)試數(shù)據(jù)提取神器 JSonPath

      在之前分享中,給大家介紹過一篇:如何快速審核接口返回值全部字段解決方案,詳見原文:接口自動(dòng)化測(cè)試,一鍵快速校驗(yàn)接口返回值全部字段 。當(dāng)時(shí),提到解決這類問題,市面上常見的解決方案有兩種:

      • 根據(jù)業(yè)務(wù)校驗(yàn)需求,自定義開發(fā)校驗(yàn)規(guī)則庫
      • 借助現(xiàn)有的第三方庫

      而文章中介紹到的方案,就是借助現(xiàn)有的第三方庫來實(shí)現(xiàn):DeepDiff 。對(duì)于一些特殊業(yè)務(wù)或者復(fù)雜的測(cè)試場(chǎng)景來說,這類通用方案,總會(huì)有一些需求無法滿足。因此往往還需要根據(jù)這類業(yè)務(wù)校驗(yàn)需求,自定義開發(fā)校驗(yàn)規(guī)則庫。

      我們今天不講如何開發(fā)一款自定義開發(fā)校驗(yàn)規(guī)則庫,而是給大家分享一款在開發(fā)自定義校驗(yàn)規(guī)則庫或者常規(guī)的接口自動(dòng)化測(cè)試時(shí),經(jīng)常會(huì)用到的一款數(shù)據(jù)提取神器:JSonPath

      1. JSonPath介紹

      JSonPath是一種簡單的方法來提取給定JSON文檔的部分內(nèi)容。 JSonPath有許多編程語言,如JavascriptPythonPHPJava等。

      JSonPath提供的json解析非常強(qiáng)大,它提供了類似正則表達(dá)式的語法,基本上可以滿足所有你想要獲得的JSON內(nèi)容。

      項(xiàng)目地址:

      https://github.com/json-path/JsonPath
      

      一句話概括:JsonPath就是用來解析提取Json數(shù)據(jù)用的

      2. JSonPath語法

      JSONPath 是參照,Xpath表達(dá)式來解析XML文檔的方式,JSON數(shù)據(jù)結(jié)構(gòu)通常是匿名的并且不一定需要有根元素。JSONPaht 用一個(gè)抽象的名字$來表示最外層對(duì)象,即$ 代表整個(gè)JSON數(shù)據(jù)的值。

      JSonpath的語法如下:jsonpath.jsonpath()

      • 參數(shù):json對(duì)象,jsonpath表達(dá)式

      • 返回值:列表

      JSONPath 表達(dá)式可以使用. 符號(hào)如下:

      $.store.book[0].title
      

      或者使用[] 符號(hào)

      $['store']['book'][0]['title']
      

      JSONPath 允許使用通配符 * 表示所以的子元素名和數(shù)組索引,還允許使用 '..' 。

      表達(dá)式在下面的腳本語言中可以使用顯示的名稱或者索引:

      $.store.book[(@.length-1)].title
      

      使用'@'符號(hào)表示當(dāng)前的對(duì)象,?(<判斷表達(dá)式>) 使用邏輯表達(dá)式來過濾。

      $.store.book[?(@.price > 100)].title
      

      其中XPathJSONPath語法區(qū)別如下:

      需要額外注意的是

      • []在xpath表達(dá)式總是從前面的路徑來操作數(shù)組,索引是從1開始。
      • 使用JOSNPath的[]操作符操作一個(gè)對(duì)象或者數(shù)組,索引是從0開始。

      3. JsonPath實(shí)戰(zhàn)使用

      安裝:

      pip install jsonpath
      

      例如:待提取的json數(shù)據(jù)變量名為: json_datas

      json_datas = {"store": {
          "book": [
            { "category": "測(cè)試開發(fā)技術(shù)",
              "author": "狂師",
              "title": "公眾號(hào):測(cè)試開發(fā)技術(shù)",
              "price": 129
            },
            { "category": "自動(dòng)化測(cè)試",
              "author": "狂師1",
              "title": "《自動(dòng)化測(cè)試實(shí)戰(zhàn)寶典》",
              "price": 109
            },
            { "category": "Python",
              "author": "狂師2",
              "title": "Python實(shí)戰(zhàn)教程",
              "isbn": "0-110-234567-30",
              "price": 99
            },
            { "category": "Java",
              "author": "狂師3",
              "title": "小白學(xué)Java",
              "isbn": "0-13095-19295-8",
              "price": 89
            }
          ],
          "info": {
            "color": "red",
            "price": 88
          }
        }
      }
      
      1. 查找book下面所有的author
      import jsonpath
      datas = jsonpath.jsonpath(json_datas, '$.store.book[*].author')
      print(datas)
      

      輸出結(jié)果為:['狂師', '狂師1', '狂師2', '狂師3']

      上述提取表達(dá)式,可以改為如下:

      datas = jsonpath.jsonpath(json_datas, '$..author')
      print(datas)
      

      具備同等效果,輸出所有author,結(jié)果同樣為:['狂師', '狂師1', '狂師2', '狂師3']

      2. 查找store下面book所有節(jié)點(diǎn)數(shù)據(jù)
      datas = jsonpath.jsonpath(json_datas, '$.store.book.*')
      print(datas)
      

      輸出結(jié)果為:

      [{'category': '測(cè)試開發(fā)技術(shù)', 'author': '狂師', 'title': '公眾號(hào):測(cè)試開發(fā)技術(shù)', 'price': 129}, {'category': '自動(dòng)化測(cè)試', 'author': '狂師1', 'title': '《自動(dòng)化測(cè)試實(shí)戰(zhàn)寶典》', 'price': 109}, {'category': 'Python', 'author': '狂師2', 'title': 'Python實(shí)戰(zhàn)教程', 'isbn': '0-110-234567-30', 'price': 99}, {'category': 'Java', 'author': '狂師3', 'title': '小白學(xué)Java', 'isbn': '0-13095-19295-8', 'price': 89}]
      
      3. 查找book下面第三個(gè)book
      datas = jsonpath.jsonpath(json_datas, '$.store.book[2]')
      print(datas)
      

      輸出結(jié)果為:

      [{'category': 'Python', 'author': '狂師2', 'title': 'Python實(shí)戰(zhàn)教程', 'isbn': '0-110-234567-30', 'price': 99}]
      
      4. 查找book下面最后個(gè)book,返回的是一個(gè)列表
      datas = jsonpath.jsonpath(json_datas, '$.store.book[(@.length-1)]')
      print(datas)
      

      輸出結(jié)果:

      [{'category': 'Java', 'author': '狂師3', 'title': '小白學(xué)Java', 'isbn': '0-13095-19295-8', 'price': 89}]
      
      5.查找 book下面前3本書
      datas = jsonpath.jsonpath(json_datas, '$.store.book[0,2]')
      print(datas)
      

      輸出結(jié)果為:

      [{'category': '測(cè)試開發(fā)技術(shù)', 'author': '狂師', 'title': '公眾號(hào):測(cè)試開發(fā)技術(shù)', 'price': 129}, {'category': 'Python', 'author': '狂師2', 'title': 'Python實(shí)戰(zhàn)教程', 'isbn': '0-110-234567-30', 'price': 99}]
      
      6. 查找所有的包含isbn這個(gè)鍵的所有book
      datas = jsonpath.jsonpath(json_datas, '$.store.book[?(@.isbn)]')
      print(datas)
      

      輸出結(jié)果為:

      [{'category': 'Python', 'author': '狂師2', 'title': 'Python實(shí)戰(zhàn)教程', 'isbn': '0-110-234567-30', 'price': 99}, {'category': 'Java', 'author': '狂師3', 'title': '小白學(xué)Java', 'isbn': '0-13095-19295-8', 'price': 89}]
      
      7. 查找價(jià)格大于100的所有書
      datas = jsonpath.jsonpath(json_datas, '$.store.book[?(@.price>100)]')
      print(datas)
      

      輸出結(jié)果:

      [{'category': '測(cè)試開發(fā)技術(shù)', 'author': '狂師', 'title': '公眾號(hào):測(cè)試開發(fā)技術(shù)', 'price': 129}, {'category': '自動(dòng)化測(cè)試', 'author': '狂師1', 'title': '《自動(dòng)化測(cè)試實(shí)戰(zhàn)寶典》', 'price': 109}]
      

      4. 最后,JsonPath小技巧

      最后再給大家推薦一個(gè)技巧,如果一開始對(duì)JSONPath表達(dá)式不太熟悉,可以將需要提取的JSON數(shù)據(jù),通過jsonpath在線解析工具測(cè)試一下,在線解析JSONPath網(wǎng)址很多,例如:

      http://www.e123456.com/aaaphp/online/jsonpath/
      

      在接口自動(dòng)化測(cè)試中,只有你懂得利用好JSONPath,那么至少可以讓你在自動(dòng)化測(cè)試數(shù)據(jù)提取這塊,隨心所欲的提取自己要想的數(shù)據(jù)。

      好了,今天的干貨分享就到這了,你學(xué)會(huì)了嗎?

      posted @ 2021-06-24 12:58  狂師  閱讀(350)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 欧美国产日韩在线三区| 蜜臀av午夜精品福利| 国产成人精品2021欧美日韩| 国产免费丝袜调教视频| 久久热这里只有精品99| 黄又色又污又爽又高潮| 国产精品自产在线观看一| 国产成人亚洲综合图区| 免费无码成人AV片在线| 欧美人与动牲交精品| 亚洲国产成人精品无码区蜜柚| 毛片内射久久久一区| 欧美人伦禁忌dvd放荡欲情| 国产av黄色一区二区三区| 日韩人妻无码精品久久| 国产精品高清中文字幕| 欧美精欧美乱码一二三四区| 久久婷婷国产精品香蕉| 久久99精品久久久久久青青| 国产精品永久在线观看| 成人午夜福利精品一区二区| 一区二区三区不卡国产| 暖暖 在线 日本 免费 中文| 偷拍美女厕所尿尿嘘嘘小便 | 在线观看免费人成视频色| 无码人妻一区二区三区在线视频| 日韩不卡一区二区在线观看| 国产福利萌白酱在线观看视频| 国产一区二区三区不卡自拍 | 国产AV影片麻豆精品传媒| 猫咪AV成人永久网站在线观看| 久久久久久久一线毛片| 亚洲av一本二本三本| 久久久久成人片免费观看蜜芽| 亚洲av天堂天天天堂色| 动漫av网站免费观看| 亚洲精品成人福利网站| 国产在热线精品视频99公交| 人人玩人人添人人澡超碰| 亚洲国产一区二区三区亚瑟| 亚洲精品日韩精品久久|