序文
抽出キーワードによって返されたオブジェクト・データ・レスポンスを抽出します。約トークン値の前にcontent.token
値。
どのようにBenpianは詳細にあなたはJSONから返されたデータを抽出したいの各種データを説明します
コンテンツオブジェクト
httprunnerは、内部のcontent
要求の内側に実際にあるr.content
、バイトのタイプを返します。
JSONは、以下のようなデータを返さ
{
"code": 0,
"msg": "login success!",
"username": "test",
"token": "b3f7e8e12d23591ea671374dee818c63b1599d4d"
}
対応するタイプの辞書パイソンに変換することができるデータ、上記JSON、抽出エキス
- content.code後でコード0に対応する値をとります
- 撮影したcontent.msg対応する値後でmsgが「成功ログイン!」
- content.usernameバック抽出されたユーザ名値「テスト」
- バック抽出されたトークン値をcontent.token「b3f7e8e12d23591ea671374dee818c63b1599d4d」
値の種類をリスト
データはJSONオブジェクトリスト内のpythonに変換返された場合は、以下の構造
[{
"age": 20,
"create_time": "2019-09-15",
"id": 1,
"mail": "[email protected]",
"name": "yoyo",
"sex": "M"
},
{
"age": 21,
"create_time": "2019-09-16",
"id": 2,
"mail": "[email protected]",
"name": "yoyo111",
"sex": "M"
}
]
これは、Pythonの内部オブジェクトの上記のリストに変換され、被験者は、対応するデータcontent.int法、抽出法、対応する抽出によって取り出すことができます
- content.0取出リスト里面的第一组数据{ "年齢":20、 "CREATE_TIME": "2019年9月15日"、 "ID":1、 "メール": "[email protected]"、「名「: "ヨーヨー"、 "セックス": "M"}
- content.1取出リスト里面的第二组数据{ "年齢":21、 "CREATE_TIME": "2019年9月16日"、 "ID":2、 "メール": "[email protected]"、「名「: "yoyo111"、 "セックス": "M"}
- content.0.name名前「ヨーヨー」に対応するデータ値の第1のセットを抽出しました
- 「yoyo111」のデータ値の第2セットに対応するcontent.1.name除去名
- content.0.mailメールが値「[email protected]」に対応するデータの最初のセットを抽出しました
例えば、私の名前は「ヨーヨー」3番目の文字の内部、content.0.name.2を使用することができる値に対応する、データの第1のセットを除去するために、内部メソッドcontent.int値文字列でこれを除去することができますめったに使われない文字列を取ります
実践例
全体として、2つの方法でコンテンツオブジェクトの値:content.key
とはcontent.int
、レイヤの階層に応じてそれを見つけること
デモケースは、以下のhttpieの使用の要求結果に応じて、あり
C:\Users\dell>http http://127.0.0.1:8000/api/test/demo
HTTP/1.1 200 OK
Content-Length: 255
Content-Type: application/json
Date: Sun, 22 Sep 2019 10:11:07 GMT
Server: WSGIServer/0.2 CPython/3.6.0
X-Frame-Options: SAMEORIGIN
{
"code": 0,
"datas": [
{
"age": 20,
"create_time": "2019-09-15",
"id": 1,
"mail": "[email protected]",
"name": "yoyo",
"sex": "M"
},
{
"age": 21,
"create_time": "2019-09-16",
"id": 2,
"mail": "[email protected]",
"name": "yoyo111",
"sex": "M"
}
],
"msg": "success!"
}
目的:DATAS内のデータの値をとることに加えて応答[email protected]内部とアサートの結果からのデータのセットに対応するメール。
test_demo.ymlスクリプトの内容
# 上海悠悠,QQ交流群:750815713
- config:
name: test_demo
variables: {}
- test:
name: test_demo case1
request:
url: http://127.0.0.1:8000/api/test/demo
method: GET
headers:
Content-Type: application/json
User-Agent: python-requests/2.18.4
json:
username: test
password: 123456
extract:
- mail: content.datas.0.mail # 提取mail
validate:
- eq: [status_code, 200]
- eq: [content.msg, success!]
- eq: [$mail, [email protected]]
業績
D:\soft\untitled>hrun test_demo.yml
test_demo case1
INFO GET http://127.0.0.1:8000/api/test/demo
INFO status_code: 200, response_time(ms): 4.99 ms, response_length: 255 bytes
INFO start to extract from response object.
INFO start to validate.
.
----------------------------------------------------------------------
Ran 1 test in 0.012s
OK
INFO Start to render Html report ...
INFO Generated Html report: D:\soft\untitled\reports\1569147460.html
成功を実行しています!