httprunnerオブジェクトが返された7-抽出エキスの学習コンテンツ

序文

抽出キーワードによって返されたオブジェクト・データ・レスポンスを抽出します。約トークン値の前に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

成功を実行しています!

おすすめ

転載: www.cnblogs.com/yoyoketang/p/11568565.html