„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie können wir Anfragen und Antworten beim Python-Unit-Testing simulieren?

Wie können wir Anfragen und Antworten beim Python-Unit-Testing simulieren?

Veröffentlicht am 23.11.2024
Durchsuche:969

How Can We Mock Requests and Responses in Python Unit Testing?

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')
Freigabeerklärung Dieser Artikel wird reproduziert unter: 1729424657 Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

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