Wie man Anfragen und Antworten verspottet
Einführung
Bei Unit-Tests in Python geht es häufig um Verspottung externe Abhängigkeiten, um reale Szenarien zu simulieren. Durch Mocking können wir das Verhalten dieser Abhängigkeiten steuern und so unseren Tests mehr Stabilität und Vorhersagbarkeit verleihen. In diesem Artikel wird gezeigt, wie Sie das Anforderungsmodul von Python und seine Antworten verspotten, um effektive Unit-Tests zu ermöglichen.
Schritt 1: Anforderungsmodul verspotten
Um das Anforderungsmodul zu verspotten, verwenden Sie das Mock-Modul aus der Standardbibliothek:
import mock
Erstellen Sie im Setup ein Mock-Objekt für das Requests-Modul Phase der Testmethode:
mockedRequests = mock.Mock()
Konfigurieren Sie das verspottete Objekt so, dass es bestimmte Antworten für verschiedene URLs zurückgibt, wenn die Methode get() aufgerufen wird:
mockedRequests.get.side_effect = [
# First URL: Return 'a response'
mock.Mock(status_code=200, text='a response'),
# Second URL: Return 'b response'
mock.Mock(status_code=200, text='b response'),
# Third URL: Return 'c response'
mock.Mock(status_code=200, text='c response')
]
Schritt 2: Aufrufen der Ansicht
Rufen Sie bei gemocktem Anforderungsmodul die Funktion in der Ansicht auf, die die Anforderungen stellt:
res1 = mockedRequests.get('aurl')
res2 = mockedRequests.get('burl')
res3 = mockedRequests.get('curl')
Schritt 3: Überprüfen der Antworten
Da das Anforderungsmodul verspottet ist, können Antworten einfach auf die erwarteten Werte überprüft werden :
self.assertEqual(res1.text, 'a response')
self.assertEqual(res2.text, 'b response')
self.assertEqual(res3.text, 'c response')
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3