ホームページ  >  記事  >  バックエンド開発  >  Python でリクエストモジュールのレスポンスをモックする方法

Python でリクエストモジュールのレスポンスをモックする方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-20 19:47:30769ブラウズ

How to Mock Requests Module Responses in Python

応答を制御するためのリクエストのモック

Python では、モック パッケージは外部モジュールまたはクラスをモックする強力な方法を提供し、ユーザーが操作できるようにします。動作を確認し、インタラクションを検証します。 HTTP リクエストのコンテキストでは、Requests モジュールのモックは、外部サービスに依存するコードをテストする場合に特に役立ちます。

ステップ 1: Requests モジュールをモックする

Requests モジュールをモックする場合は、目的の応答を返すカスタム関数を get() 関数にパッチする必要があります。次のようなモック メソッドを定義できます。

<code class="python">def mocked_requests_get(url, **kwargs):
  if url == "aurl":
    return MockResponse("a response")
  elif url == "burl":
    return MockResponse("b response")
  else:
    raise Exception("URL not mocked")</code>

このメソッドは有効な URL を予期し、事前定義されたコンテンツを含むふりの応答を表す MockResponse オブジェクトを返すことに注意してください。

ステップ 2: 元のリクエスト モジュールにパッチを適用します

モック メソッドを定義したら、@mock.patch デコレータを使用して元の request.get() にパッチを適用できます。これにより、テストしているコード内の request.get() へのすべての呼び出しがモックされた動作に置き換えられます。

<code class="python">@mock.patch("requests.get", side_effect=mocked_requests_get)
def test_myview(self, mock_get):
  # Your test goes here</code>

ステップ 3: ビューを呼び出して応答を確認する

これで、通常どおり関数を呼び出し、期待した応答が得られたことを確認できます。モック オブジェクトを検査すると、get() 関数が特定の引数で呼び出され、必要な値が返されたことを確認できます。

コード例:

<code class="python">import requests
from unittest import mock

class MyViewTest(unittest.TestCase):
    # ...
    def test_myview(self, mock_get):
        self.assertEqual(res1.text, "a response")
        self.assertEqual(res2.text, "b response")
        self.assertEqual(res3.text, "c response")

        # Verify mock calls
        mock_get.assert_called_with('aurl')
        mock_get.assert_called_with('burl')
        mock_get.assert_called_with('curl')</code>

覚えておいてください応答のテキスト内容と、モック メソッドに渡された呼び出し回数と引数の両方を確認します。これにより、予期したインタラクションが行われ、望ましい動作が達成されたことを確認できます。

以上がPython でリクエストモジュールのレスポンスをモックする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。