Python テストのリクエストとレスポンスのモック
Python テストでは、実行フローを制御するためにモジュールとその機能をモックすることが必要になります。そして特定のシナリオを検証します。このうち、requests モジュールのモックは、HTTP リクエストに依存する関数やメソッドをテストするためによく使用されます。
次のコードを含む views.py ファイルについて考えてみましょう。
def myview(request):
res1 = requests.get('aurl')
res2 = request.get('burl')
res3 = request.get('curl')
この動作を模擬するには、Python 模擬パッケージを使用できます。これを段階的に実現する方法は次のとおりです:
ステップ 1: モック動作を定義する
requests モジュールをモックするには、requests.get を置き換える関数を定義します。 ()。この関数では、URL ごとに必要な応答を指定できます。
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)
ステップ 2: リクエスト モジュールにパッチを適用する
テスト ケースで、mock.patch() デコレータを使用して実際のリクエストを置き換えますモック関数を含むモジュール。
@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
...
ステップ 3: アサーションを検証する
テスト関数内でアサーションを使用して、予期した応答が返されることを検証できます。
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')
これらの手順に従うことで、HTTP リクエストを効果的にモックし、Python テスト シナリオでの応答を制御できます。これにより、外部の依存関係が結果に干渉しないようにしながら、特定の機能を分離してテストできます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3