Heim >Backend-Entwicklung >Python-Tutorial >So verspotten Sie die Antworten des Anforderungsmoduls 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!