Heim  >  Artikel  >  Backend-Entwicklung  >  So verspotten Sie die Antworten des Anforderungsmoduls in Python

So verspotten Sie die Antworten des Anforderungsmoduls in Python

Susan Sarandon
Susan SarandonOriginal
2024-10-20 19:47:30773Durchsuche

How to Mock Requests Module Responses in Python

Verspotten von Anfragen zur Steuerung von Antworten

In Python bietet das Mock-Paket eine leistungsstarke Möglichkeit, externe Module oder Klassen zu verspotten, sodass Sie sie manipulieren können Verhalten und validieren Interaktionen. Im Kontext von HTTP-Anfragen kann das Verspotten des Anforderungsmoduls besonders nützlich sein, um Code zu testen, der auf externen Diensten basiert.

Schritt 1: Verspotten Sie das Anforderungsmodul

An Um das Requests-Modul nachzuahmen, müssen Sie die Funktion get() mit einer benutzerdefinierten Funktion patchen, die die gewünschten Antworten zurückgibt. Sie können eine Scheinmethode wie folgt definieren:

<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>

Beachten Sie, dass diese Methode eine gültige URL erwartet und ein MockResponse-Objekt zurückgibt, das die vorgetäuschte Antwort mit vordefiniertem Inhalt darstellt.

Schritt 2: Patchen Sie das Original-Requests-Modul

Sobald Sie die Mock-Methode definiert haben, können Sie das Original-Requests.get() mithilfe des @mock.patch-Dekorators damit patchen. Dadurch werden alle Aufrufe von „requests.get()“ im Code, den Sie testen, durch Ihr vorgetäuschtes Verhalten ersetzt.

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

Schritt 3: Aufrufen der Ansicht und Überprüfung der Antworten

Jetzt können Sie Ihre Funktion wie gewohnt aufrufen und überprüfen, ob die erwarteten Antworten erhalten wurden. Das Scheinobjekt kann überprüft werden, um sicherzustellen, dass die Funktion get() mit bestimmten Argumenten aufgerufen wurde und die gewünschten Werte zurückgegeben hat.

Beispielcode:

<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>

Denken Sie daran um sowohl den Textinhalt der Antworten als auch die Aufrufanzahl und die an Ihre Scheinmethode übergebenen Argumente zu überprüfen. Dadurch können Sie sicherstellen, dass die erwarteten Interaktionen stattgefunden haben und das gewünschte Verhalten erreicht wurde.

Das obige ist der detaillierte Inhalt vonSo verspotten Sie die Antworten des Anforderungsmoduls in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn