pythonインタフェースの自動化--json解析神器jsonpath
12733 ワード
前言
インタフェーステストをするとき、ほとんどの場合、jsonデータが返されます.返されたjsonを断言する必要があります.
返されるデータ量が比較的大きく、ネストされた階層が深い場合、多くの小さなパートナーは値を取らず、結果の値を返すのに多くの時間を浪費することが多い.ずっと便利なjsonのライブラリを探していましたが、今日見つけました.そこでjsonpath解析ライブラリがあり,jsonパスが深く,値を取るのが難しいという問題を専門に解決した.
ディクショナリ値
インタフェースに返されるインタフェースをdictタイプに変換し、辞書キー値で値を取ります.
階層がますます深くなると、値を取るのが難しくなり、リストの内容が何番目か分からないことがよくあります.例えば、戻った結果に
jsonpath解析
次に、非常に強力で便利なjsonpathをjson解析に特化し、経路の深い老大難問題を解決します.依存パッケージのインストール
jsonpathはサードパーティモジュールで、追加のインストールが必要です
result=jsonpath(obj,'jsonpath構文規則文字列')
jsonpathを学ぶにはxpathに言及せざるを得ないが,この2つの間の文法はそれほど悪くない.
Xpath
JSONPath
説明
/
$
ヒールノード
.
@
カレントノード
/
. or []
サブノードを取る
..
n/a
親ノードJsonPathはサポートされていません
//
..
相対ノードとは、位置に関係なく、条件を満たすすべての条件を選択することです.
*
*
すべての要素ノードを一致させる
[]
[]
反復器の表示(配列の下付き、内容に応じて値を選択するなど、簡単な反復操作ができます)
|
[,]
反復器での複数選択をサポート
[]
?()
フィルタ処理のサポート
n/a
()
式の計算をサポート
()
n/a
グループ化、JsonPathはサポートされていません
もし文章があなたに役に立つなら、いいねを押してください.支持してくれてありがとう.ソフトウェアテスト、インタフェーステスト、自動化テスト、パフォーマンステスト、継続的な統合、面接経験の交流.興味があれば902061117に入ることができます.グループ内には不定期に無料の資料リンクが配布されます.これらの資料は各技術サイトから収集され、整理されています.もし良い学習資料があれば、プライベートで私に話してもいいです.出典を明記してから、みんなに共有します.
インタフェーステストをするとき、ほとんどの場合、jsonデータが返されます.返されたjsonを断言する必要があります.
返されるデータ量が比較的大きく、ネストされた階層が深い場合、多くの小さなパートナーは値を取らず、結果の値を返すのに多くの時間を浪費することが多い.ずっと便利なjsonのライブラリを探していましたが、今日見つけました.そこでjsonpath解析ライブラリがあり,jsonパスが深く,値を取るのが難しいという問題を専門に解決した.
ディクショナリ値
インタフェースに返されるインタフェースをdictタイプに変換し、辞書キー値で値を取ります.
# QQ :902061117
# , dict
1 result = {
2 "code": 0,
3 "data": [
4 {
5 "age": 35,
6 "create_time": "2020-07-01",
7 "id": 1,
8 "mail": "[email protected]",
9 "name": " ",
10 "sex": "Man"
11 },
12 {
13 "age": 21,
14 "create_time": "2016-12-30",
15 "id": 2,
16 "mail": "[email protected]",
17 "name": " ",
18 "sex": "gril"
19 }
20 ],
21 "msg": "success!"
22 }
23
24 #
25 assert result["code"] == 0
26 assert result["msg"] == "success!"
27 assert result["data"][0]["name"] == " "
階層がますます深くなると、値を取るのが難しくなり、リストの内容が何番目か分からないことがよくあります.例えば、戻った結果に
"name": " "
があるかどうかを判断したいと思っています.data
リストの何番目かを知らないと、断言するのは複雑です.jsonpath解析
次に、非常に強力で便利なjsonpathをjson解析に特化し、経路の深い老大難問題を解決します.依存パッケージのインストール
jsonpathはサードパーティモジュールで、追加のインストールが必要です
pip install jsonpath
result=jsonpath(obj,'jsonpath構文規則文字列')
jsonpathを学ぶにはxpathに言及せざるを得ないが,この2つの間の文法はそれほど悪くない.
Xpath
JSONPath
説明
/
$
ヒールノード
.
@
カレントノード
/
. or []
サブノードを取る
..
n/a
親ノードJsonPathはサポートされていません
//
..
相対ノードとは、位置に関係なく、条件を満たすすべての条件を選択することです.
*
*
すべての要素ノードを一致させる
[]
[]
反復器の表示(配列の下付き、内容に応じて値を選択するなど、簡単な反復操作ができます)
|
[,]
反復器での複数選択をサポート
[]
?()
フィルタ処理のサポート
n/a
()
式の計算をサポート
()
n/a
グループ化、JsonPathはサポートされていません
$
は検索のルートノードであり、伝達パラメータはpythonのdictタイプであり、検索したときにリスト結果を返し、検索に失敗したときにFalseを返す.import jsonpath
# QQ :902061117
result = {
"code": 0,
"data": [
{
"age": 35,
"create_time": "2020-05-15",
"id": 1,
"mail": "[email protected]",
"name": " ",
"sex": "Man"
},
{
"age": 3,
"create_time": "2016-12-30",
"id": 2,
"mail": "[email protected]",
"name": " ",
"sex": "gril"
}
],
"msg": "success!"
}
msg = jsonpath.jsonpath(result, '$.msg')
print(msg) # ['success!']
names = jsonpath.jsonpath(result, '$..name')
print(names) # [' ', ' ']
no = jsonpath.jsonpath(result, '$.. ')
print(no) # False
もし文章があなたに役に立つなら、いいねを押してください.支持してくれてありがとう.ソフトウェアテスト、インタフェーステスト、自動化テスト、パフォーマンステスト、継続的な統合、面接経験の交流.興味があれば902061117に入ることができます.グループ内には不定期に無料の資料リンクが配布されます.これらの資料は各技術サイトから収集され、整理されています.もし良い学習資料があれば、プライベートで私に話してもいいです.出典を明記してから、みんなに共有します.