requests-mock
はPythonのテストコードでHTTPリクエストをスタブ化するためのツールです。この記事では、requests-mock
を使用してPythonのテストを作成する方法について説明します。
requests-mockの基本
requests-mock
は、特定のURIが呼び出されたときに事前に定義したレスポンスを提供するカスタムアダプタを作成します。以下に簡単な例を示します。
import requests
import requests_mock
session = requests.Session()
adapter = requests_mock.Adapter()
session.mount('mock://', adapter)
adapter.register_uri('GET', 'mock://test.com', text='data')
resp = session.get('mock://test.com')
print(resp.status_code, resp.text) # Output: (200, 'data')
このコードでは、mock://test.com
というURIにGETリクエストを送ると、ステータスコード200とテキスト’data’を返すように設定しています。
requests-mockの使用方法
requests-mock
は、コンテキストマネージャ、デコレータ、pytestフィクスチャとして使用できます。
コンテキストマネージャとしての使用
with requests_mock.Mocker() as m:
m.get('http://test.com', text='data')
print(requests.get('http://test.com').text) # Output: 'data'
デコレータとしての使用
@requests_mock.Mocker()
def test_func(m):
m.get('http://test.com', text='data')
return requests.get('http://test.com').text
print(test_func()) # Output: 'data'
pytestフィクスチャとしての使用
def test_simple(requests_mock):
requests_mock.get('http://test.com', text='data')
assert 'data' == requests.get('http://test.com').text
以上がrequests-mock
の基本的な使用方法です。詳細な情報は公式ドキュメントを参照してください。