如何在 Python 中模擬請求模組回應

Susan Sarandon
發布: 2024-10-20 19:47:30
原創
769 人瀏覽過

How to Mock Requests Module Responses in Python

模擬請求來控制回應

在Python中,mock套件提供了一種強大的方法來模擬外部模組或類,允許您操作行為並驗證互動。在 HTTP 請求的上下文中,模擬請求模組對於測試依賴外部服務的程式碼特別有用。

第 1 步:模擬請求模組

至模擬 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 裝飾器來修補原始 requests.get() 。這將取代您正在使用模擬行為測試的程式碼中對 requests.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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!