„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 verspottet man HTTP-Anfragen und -Antworten in Python-Testszenarien?

Wie verspottet man HTTP-Anfragen und -Antworten in Python-Testszenarien?

Veröffentlicht am 02.11.2024
Durchsuche:718

How to Mock HTTP Requests and Responses in Python Testing Scenarios?

Verspotten von Anfragen und Antworten für Python-Tests

Bei Python-Tests ist es notwendig, Module und ihre Funktionalität zu verspotten, um den Ausführungsfluss zu steuern und überprüfen Sie bestimmte Szenarien. Unter diesen wird das Verspotten des Anforderungsmoduls häufig verwendet, um Funktionen oder Methoden zu testen, die auf HTTP-Anforderungen basieren.

Stellen Sie sich eine Datei „views.py“ mit dem folgenden Code vor:

def myview(request):
    res1 = requests.get('aurl')
    res2 = request.get('burl')
    res3 = request.get('curl')

Um dieses Verhalten zu simulieren, können Sie das Python-Mock-Paket verwenden. So können Sie es Schritt für Schritt erreichen:

Schritt 1: Definieren Sie das Scheinverhalten

Um das Anforderungsmodul zu verspotten, definieren Sie eine Funktion, die „requests.get“ ersetzt (). In dieser Funktion können Sie für jede URL die gewünschte Antwort angeben.

def mocked_requests_get(*args, **kwargs):
    class MockResponse:
        def __init__(self, json_data, status_code):
            self.json_data = json_data
            self.status_code = status_code

        def json(self):
            return self.json_data

    if args[0] == 'aurl':
        return MockResponse({'a': 'a'}, 200)
    elif args[0] == 'burl':
        return MockResponse({'b': 'b'}, 200)
    elif args[0] == 'curl':
        return MockResponse({'c': 'c'}, 200)

    return MockResponse(None, 404)

Schritt 2: Patchen Sie das Anforderungsmodul

Verwenden Sie in Ihrem Testfall den Dekorator „mock.patch()“, um die tatsächlichen Anforderungen zu ersetzen Modul mit Ihrer Mock-Funktion.

@mock.patch('requests.get', side_effect=mocked_requests_get)
def test_myview(self, mock_get):
    # Call the function you want to test
    myview(None)
    # Assertions for expected responses
    ...

Schritt 3: Behauptungen überprüfen

Innerhalb Ihrer Testfunktion können Sie Behauptungen verwenden, um zu überprüfen, ob die erwarteten Antworten zurückgegeben werden.

self.assertEqual(mock_get.call_args_list[0][0][0], 'aurl')
self.assertEqual(mock_get.call_args_list[1][0][0], 'burl')
self.assertEqual(mock_get.call_args_list[2][0][0], 'curl')

Indem Sie diese Schritte befolgen, können Sie HTTP-Anfragen effektiv simulieren und die Antworten in Ihren Python-Testszenarien steuern. Dadurch können Sie bestimmte Funktionen isolieren und testen und gleichzeitig sicherstellen, dass externe Abhängigkeiten Ihre Ergebnisse nicht beeinträchtigen.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729424478 Bei Verstößen 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