\

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の基本的な使用方法です。詳細な情報は公式ドキュメントを参照してください。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です