小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

技術必備:推薦一款接口自動化測試數(shù)據(jù)校驗神器

 測試開發(fā)技術 2022-06-18 發(fā)布于廣東

大家好,我是狂師。

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

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

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

1. JSonPath介紹

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

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

項目地址:

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

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

2. JSonPath語法

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

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

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

  • 返回值:列表

JSONPath 表達式可以使用.  符號如下:

$.store.book[0].title

或者使用[] 符號

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

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

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

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

使用'@'符號表示當前的對象,?(<判斷表達式>) 使用邏輯表達式來過濾。

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

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

需要額外注意的是

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

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

安裝:

pip install jsonpath

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

json_datas = {"store": {
    "book": [
      { "category""測試開發(fā)技術",
        "author""狂師",
        "title""關注公眾號:測試開發(fā)技術",
        "price"129
      },
      { "category""自動化測試",
        "author""狂師1",
        "title""《自動化測試實戰(zhàn)寶典》",
        "price"109
      },
      { "category""Python",
        "author""狂師2",
        "title""Python實戰(zhàn)教程",
        "isbn""0-110-234567-30",
        "price"99
      },
      { "category""Java",
        "author""狂師3",
        "title""小白學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)

輸出結果為:['狂師', '狂師1', '狂師2', '狂師3']

上述提取表達式,可以改為如下:

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

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

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

輸出結果為:

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

輸出結果為:

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

輸出結果:

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

輸出結果為:

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

輸出結果為:

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

輸出結果:

[{'category': '測試開發(fā)技術', 'author': '狂師', 'title': '關注公眾號:測試開發(fā)技術', 'price': 129}, {'category': '自動化測試', 'author': '狂師1', 'title': '《自動化測試實戰(zhàn)寶典》', 'price': 109}]

4. 最后,JsonPath小技巧

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

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

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

好了,今天的干貨分享就到這了,你學會了嗎?

如果你覺得文章還不錯,幫忙 點贊、轉發(fā)、關注留言 ,因為這將是公號持續(xù)輸出更多優(yōu)質文章的最強動力!本篇點贊超過30+,下個月將有大驚喜~

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多