requesthttp リクエストを送信する

  今日からインターフェイス自動化について正式に紹介し始めました. テストを行う友人の多くは jmeter、loadrunner、postman などのツールを使用していると思いますので、今日はまず、インターフェイス自動化があまり得意でない学生に説明します。基本、postman を使用してインターフェイスをテストする方法、および Python コードで http リクエストを送信する方法

まず、インターフェーステストを行う前に、通常は開発者からインターフェースドキュメントを入手しますが、インターフェースドキュメントがなければ、インターフェーステストのこの部分を迅速かつ効率的に実施することは困難です。そのため、事前に準備するか、インターフェースを入手する必要があります。テスト

  次に登録とログインを例に、スクリーンショットを添付しますので、事前に postman ツールをダウンロードしてインストールしてください。

まずはpostmanの基本的な使い方

リクエストヘッダー情報のスクリーンショットは次のとおりです。

 一つ一つ手動で書きたくない場合は、簡単な方法があります。

 

見てください、それは自動的に生成されます

 注意すべき点がいくつかあります。

1. 開発者から提供されたインターフェースドキュメントを必ず組み合わせてください。

2. リクエストヘッダー、ないもの、あるものあり、インターフェイスドキュメントを参照

3. リクエストメソッドは、post メソッドか get メソッドかによって異なります。

2、リクエストは http リクエストを送信します

ここでいくつかの疑問が生じます。インターフェースのテストにはツールしか使用できませんか? インターフェイステストを行うためのコードを書くことはできますか? もちろん、Python コードは依然として非常に強力です

コードを記述する前に、まずリクエスト プラグインをインストールし、コマンド pip installrequests をインストールします。

 

 次に、ログイン インターフェイスを例として、次の内容を続けて見てください。

import requests # 登录的接口地址 url = "http://api.lemonban.com/futureloan/member/login" # 登录的参数 params = { "mobile_phone": "15879563287", "pwd": "lemonban" } # 请求头 headers = { "X-Lemonban-Media-Type": "lemonban.v2", } # 发送一个登录的请求 # 请求类型为Content-Type:application/json,参数就应该使用json去传递 response = requests.post(url=url, json=params, headers=headers) print(response) # 200,请求成功 # 获取接口返回的数据 print(response.text)

 

3. リクエストはさまざまなリクエストタイプのパラメータを処理します

一般的なインターフェイス リクエスト パラメータのタイプ:

1. クエリ文字列パラメータ:
    一般的に get リクエストで使用されます(他のリクエスト メソッドはほとんど使用されません)。パラメータは URL アドレス リクエストの後ろに直接接続されて
    リクエストを送信し、クエリ文字列パラメータを渡すには、params を使用して params= を渡します。パラメータ

2. json タイプ パラメータ:
    リクエスト パラメータ タイプは Content-Type: application/json です。
    リクエストはリクエストを送信し、json パラメータを渡します。json=params を渡すには json を使用する必要があります。

3. フォーム タイプのパラメータ リクエスト
    パラメータのタイプ: content-type: application/x-www-form-urlencoded
    リクエスト リクエストを送信してフォーム パラメータを渡すには、data を使用して data=params を渡す必要があります。

4. ファイルアップロード:
    リクエストパラメータタイプ: content-type: multipart/form-data
    ファイルパラメータはファイルを使用して渡される必要があります ファイル
    パラメータのアセンブリ:
    {"パラメータ名": ("ファイル名"、openはrbモードでファイルを開きます、 " ファイル タイプ")}
    [("パラメータ名", ("ファイル名", open rb モードでファイルを開きます, "ファイル タイプ"))]

import requests # --------------------查询字符串参数传递----------------------------- # 查询字符串参数的传递: url = "http://api.lemonban.com/futureloan/loans" # 请求参数 params = { "pageIndex": 1, "pageSize": 20 } # 请求头 headers = { "X-Lemonban-Media-Type": "lemonban.v2" } response1 = requests.get(url=url, params=params, headers=headers) print(response1.text) # ----------------------json格式的参数传递------------------------------ # 注册的接口地址 url = "http://api.lemonban.com/futureloan/member/register" # 参数 params = { "mobile_phone": "15879562223", "pwd": "lemonban" } # 请求头 headers = { "X-Lemonban-Media-Type": "lemonban.v2" } response2 = requests.post(url=url, json=params, headers=headers) print(response2.text) # ------------------------表单类型参数的传递---------------------------------- # 接口地址 url = "https://www.ketangpai.com/UserApi/login" # 参数 params = { "email": "24782578257", "password": "1426", "remember": 0 } response3 = requests.post(url=url, data=params) print(response3.json()) # -----------------------文件上传--------------------------------- # 上传文件的接口地址(这是授课老师本地的,我们无法访问) url = "http://127.0.0.1:5000/upload" # 请求的参数 params = { "nickname": "1122", "age": 18, "sex": "男" } file = { "pic": ("jiayouya.gif", open("jiayouya.gif", "rb"), "image/gif") } # response4 = requests.post(url=url, data=params, files=file) print(response4.json())

4. リクエストレスポンスデータの抽出方法

応答オブジェクトの応答:

1.HTTPレスポンスコード:response.status_code

2. 返されたデータの抽出:
1. テキスト属性 (str): 元の json 文字列を取得します (あまり使用されません)
2. コンテンツ属性 (バイト): decode を使用して文字列に変換するエンコーディングを指定できます (あまり使用されません) )
3. json() メソッド (dict): 取得するのは、json によって変換された辞書/リストです (仕事でよく使用されるため、習得する必要があります!!!)

3. json型データとpythonのデータの比較
      json python
    {}: オブジェクト辞書
    []: 配列リスト
    empty null None
    Boolean false False
       true True

import requests # 登录的接口地址 url = "http://api.lemonban.com/futureloan/member/login" # 登录的参数 params = { "mobile_phone": "15879563287", "pwd": "lemonban11" } # 请求头 headers = { "X-Lemonban-Media-Type": "lemonban.v2", } # 发送一个登录的请求 # 请求类型为Content-Type:application/json,参数就应该使用json去传递 response = requests.post(url=url, json=params, headers=headers) # 获取接口返回的数据 print(response.text) print(response.json())

5、jsonpath と json データ

json抽出データ

最初に jsonpath インストール コマンドをインストールします: pip install jsonpath

次に、ここで次のような一連のデータを指定します。これはログイン後に返されるデータです。

{'code': 0, 'msg': 'OK', 'data':{ 'id': 2096225, 'leave_amount': 0.0, 'mobile_phone': '15879563287', 'reg_name': '小柠檬', 'reg_time': '2020-08-21 11:36:56.0', 'type': 1, 'token_info': { 'token_type': 'Bearer', 'expires_in': '2020-08-21 18:11:31', 'token': 'eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjIwOTYyMjUsImV4cCI6MTU5ODAwNDY5MX0.dvhKZs67w2jWX9zjqzsQ_7xjE3ggcfuEjtl6HOkmSb0qWkqp8pOiMYzJ6LDSKfGj_6D-1SnxDqd4Ew2fY8oziw' } }, 'copyright': 'Copyright 柠檬班 © 2017-2020 湖南省零檬信息技术有限公司 All Rights Reserved' }
from jsonpath import jsonpath import requests # 登录的接口地址 url = "http://api.lemonban.com/futureloan/member/login" # 登录的参数 params = { "mobile_phone": "15879563287", "pwd": "lemonban" } # 请求头 headers = { "X-Lemonban-Media-Type": "lemonban.v2", } # 发送一个登录的请求 # 请求类型为Content-Type:application/json,参数就应该使用json去传递 response = requests.post(url=url, json=params, headers=headers) # 获取接口返回的数据 res = response.json() # 通过字典键值对的方式获取 # token = res["data"]["token_info"]["token"] # print(token) # 通过jsonpath提取 token = jsonpath(res, "$..token") print(token)

 

 詳細な画像をあげましょう:

データを抽出するための jsonpath の構文は基本的に次のとおりです。

 Jsonデータにリストが残っている場合、リスト型のデータ情報を取得するにはどうすればよいですか?

例: json タイプのデータを指定します。スクリーンショットを参照してください。

import json from jsonpath import jsonpath # 读取json文件中的数据,转换为python中的字典 with open("data.json", "r", encoding="utf-8") as f: res = json.load(f) res = jsonpath(res, "$.toplists[1].id") print(res)

 したがって、json のこの部分の内容を要約してデータを取得するには、次の点があります。

1. $..code の例としてドル記号 $ を直接使用できます。

2. リスト内の情報を検索する必要がある場合 (例: $.toplists[1])

おすすめ

転載: blog.csdn.net/MXB1220/article/details/132279865