APIの動きをテストする際にPostmanなどのGUIツールがよく利用されますが、Pythonを利用して短いコードで簡単にAPIをテストすることが可能です。この記事では、Pythonを使ってAPIを簡単にテストする方法を解説します。様々な具体的なケースとそれに応じた具体的なコードを提示します。
事前準備: ライブラリのインストール
最初に、APIテストに使用するライブラリをインストールします。Pythonにはrequests
やunittest
など、APIテストに便利なライブラリが多数ありますが、ここではrequests
を使用します。
pip install requests
基本的なGETリクエストのテスト
最初に、GETリクエストを送信してAPIの応答を確認する一番基本的な基本的な方法を示します。url
にテストしたいAPIのURLを指定します。requests
のget
メソッドを利用してリクエストを送信します。帰ってきたレスポンスはJSON形式で表示します。一時的なテストでは「ステータスコードの確認」はなくても問題ありません。
import requests url = 'https://api.example.com/data' response = requests.get(url) # ステータスコードの確認 assert response.status_code == 200 # 応答の内容を表示 print(response.json())
パラメータ付きGETリクエストのテスト
パラメータを含むGETリクエストを送信する場合、次のようにします。先ほどの基本的なGETのリクエストに加え、get
メソッドで渡したいパラメータを送信します。
import requests url = 'https://api.example.com/data' params = {'param1': 'value1', 'param2': 'value2'} response = requests.get(url, params=params) # ステータスコードの確認 assert response.status_code == 200 # 応答の内容を表示 print(response.json())
POSTリクエストのテスト
POSTリクエストを送信してデータをAPIに送信し、応答を確認します。GETのサイト基本的な流れは同じです。post
メソッドを利用してリクエストを送信します。ステータスコードの確認を行う際は一般的に201になることに留意します。
import requests url = 'https://api.example.com/data' data = {'key': 'value'} response = requests.post(url, json=data) # ステータスコードの確認 assert response.status_code == 201 # 応答の内容を表示 print(response.json())
この他のTips
上記な基本的なAPIをテストに工夫を加えることでより多様なケースに対応することができます。以下に幾つかのTipsを紹介します。
セッションの再利用
requests.Session
オブジェクトを使用してセッションを開始し、同じセッションを再利用することで、複数のリクエストでの接続コストを削減し、パフォーマンスを向上させることができます。
import requests session = requests.Session() # セッションを再利用してGETリクエストを送信 response1 = session.get('https://api.example.com/data1') response2 = session.get('https://api.example.com/data2')
タイムアウトの設定
timeout
パラメータを使用して、リクエストのタイムアウト時間を設定することができます。これにより、サーバーが応答しない場合や接続が遅い場合に、無限にブロックされることを防ぐことができます。
import requests response = requests.get('https://api.example.com/data', timeout=5) # 5秒のタイムアウト
エラーハンドリング
リクエストが失敗した場合のエラーハンドリングを行うことが重要です。response.raise_for_status()
メソッドを使用すると、リクエストが失敗した場合にHTTPErrorを発生させることができます。
import requests try: response = requests.get('https://api.example.com/data') response.raise_for_status() # エラーがあれば例外を発生させる except requests.exceptions.HTTPError as err: print(err)
まとめ
Pythonを使ってAPIをテストする基本的な方法を理解しました。様々なシナリオに応じて、これらの例をカスタマイズして利用してください。PythonではGUIツールに比べて柔軟に条件を設定することが可能です。また、繰り返し使い、慣れれば、GUIツールよりも手早くテストすることが可能です。
[PR]