Heim >Backend-Entwicklung >Python-Tutorial >Wie verspottet man HTTP-Anfragen und -Antworten in Python-Testszenarien?

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

Susan Sarandon
Susan SarandonOriginal
2024-10-20 19:44:02357Durchsuche

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 häufig das Verspotten des Anforderungsmoduls verwendet, um Funktionen oder Methoden zu testen, die auf HTTP-Anfragen basieren.

Betrachten Sie eine Datei „views.py“ mit dem folgenden Code:

<code class="python">def myview(request):
    res1 = requests.get('aurl')
    res2 = request.get('burl')
    res3 = request.get('curl')</code>

Um dies zu verspotten Verhalten 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 die gewünschte Antwort für jede URL angeben.

<code class="python">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)</code>

Schritt 2: Patchen Sie das Requests-Modul

Verwenden Sie in Ihrem Testfall den Mock .patch()-Dekorator, um das eigentliche Anforderungsmodul durch Ihre Scheinfunktion zu ersetzen.

<code class="python">@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
    ...</code>

Schritt 3: Behauptungen überprüfen

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

<code class="python">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')</code>

Indem Sie diese Schritte befolgen, können Sie HTTP-Anfragen effektiv verspotten 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.

Das obige ist der detaillierte Inhalt vonWie verspottet man HTTP-Anfragen und -Antworten in Python-Testszenarien?. 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