ホームページ >バックエンド開発 >Python チュートリアル >Python テスト シナリオで HTTP リクエストとレスポンスをモックする方法

Python テスト シナリオで HTTP リクエストとレスポンスをモックする方法

Barbara Streisand
Barbara Streisandオリジナル
2024-10-20 19:42:30631ブラウズ

How to Mock HTTP Requests and Responses in Python Testing Scenarios?

Python テストのリクエストとレスポンスのモック化

Python テストでは、実行フローを制御するためにモジュールとその機能をモック化することが必要になります。そして特定のシナリオを検証します。このうち、requests モジュールのモック化は、HTTP リクエストに依存する関数やメソッドをテストするためによく使用されます。

次のコードを含む views.py ファイルを考えてみましょう:

<code class="python">def myview(request):
    res1 = requests.get('aurl')
    res2 = request.get('burl')
    res3 = request.get('curl')</code>

これをモックするには動作を確認するには、Python モック パッケージを使用できます。これを段階的に実現する方法は次のとおりです。

ステップ 1: モック動作を定義する

requests モジュールをモックするには、requests.get を置き換える関数を定義します。 ()。この関数では、URL ごとに必要な応答を指定できます。

<code class="python">def mocked_requests_get(*args, **kwargs):
    class MockResponse:
        def __init__(self, json_data, status_code):
            self.json_data = json_data
            self.status_code = status_code

        def json(self):
            return self.json_data

    if args[0] == 'aurl':
        return MockResponse({'a': 'a'}, 200)
    elif args[0] == 'burl':
        return MockResponse({'b': 'b'}, 200)
    elif args[0] == 'curl':
        return MockResponse({'c': 'c'}, 200)

    return MockResponse(None, 404)</code>

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

テスト ケースでは、モックを使用します。 .patch() デコレータを使用して、実際のリクエスト モジュールをモック関数で置き換えます。

<code class="python">@mock.patch('requests.get', side_effect=mocked_requests_get)
def test_myview(self, mock_get):
    # Call the function you want to test
    myview(None)
    # Assertions for expected responses
    ...</code>

ステップ 3: アサーションを確認する

テスト関数内で、次のコマンドを使用できます。

<code class="python">self.assertEqual(mock_get.call_args_list[0][0][0], 'aurl')
self.assertEqual(mock_get.call_args_list[1][0][0], 'burl')
self.assertEqual(mock_get.call_args_list[2][0][0], 'curl')</code>

これらの手順に従うことで、HTTP リクエストを効果的にモックし、Python テスト シナリオでのレスポンスを制御できます。これにより、外部の依存関係が結果に干渉しないようにしながら、特定の機能を分離してテストできます。

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

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