Pythonを使ってAPIを簡単にテストする方法

APIの動きをテストする際にPostmanなどのGUIツールがよく利用されますが、Pythonを利用して短いコードで簡単にAPIをテストすることが可能です。この記事では、Pythonを使ってAPIを簡単にテストする方法を解説します。様々な具体的なケースとそれに応じた具体的なコードを提示します。

事前準備: ライブラリのインストール

最初に、APIテストに使用するライブラリをインストールします。Pythonにはrequestsunittestなど、APIテストに便利なライブラリが多数ありますが、ここではrequestsを使用します。

pip install requests

基本的なGETリクエストのテスト

最初に、GETリクエストを送信してAPIの応答を確認する一番基本的な基本的な方法を示します。urlにテストしたいAPIのURLを指定します。requestsgetメソッドを利用してリクエストを送信します。帰ってきたレスポンスは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]

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com