Das Testen von Flask-Anwendungen

FlaskFlaskBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernst du, wie du Flask-Anwendungen mit dem pytest-Framework testest. Das Testen ist ein wichtiger Teil des Softwareentwicklungsprozesses, da es hilft, die Korrektheit und Zuverlässigkeit deiner Anwendung sicherzustellen. Flask bietet Hilfsmittel zum Testen, was es einfach macht, Tests für verschiedene Teile deiner Anwendung zu schreiben.

Hinweis: Du musst die Code-Datei selbst erstellen und sie in der Umgebung ausführen. Du kannst den Status des Flask-Diensts auf Web 5000 vorab anzeigen.

Testumgebung einrichten

Bevor du mit dem Schreiben von Tests für deine Flask-Anwendung beginnen kannst, musst du die Testumgebung einrichten. Hier sind die Schritte dazu:

  1. Installiere das pytest-Framework, indem du folgenden Befehl ausführst:

    pip install pytest
  2. Erstelle in einem Ordner namens tests deiner Flask-Anwendung eine neue Datei namens conftest.py.

  3. Importiere in der Datei conftest.py die erforderlichen Module:

    import pytest
    from my_app import create_app
  4. Definiere einen Fixture namens app, der eine App-Instanz erstellt und konfiguriert:

    @pytest.fixture()
    def app():
        app = create_app()
        app.config.update({
            "TESTING": True,
        })
        yield app

    Beachte, dass du den Fixture entsprechend anpassen solltest, wenn du das Anwendungsfactory-Pattern verwendest.

  5. Definiere Fixtures für den Testclient und den CLI-Laufenden:

    @pytest.fixture()
    def client(app):
        return app.test_client()
    
    @pytest.fixture()
    def runner(app):
        return app.test_cli_runner()

Tests schreiben

Jetzt, nachdem du die Testumgebung eingerichtet hast, kannst du mit dem Schreiben von Tests für deine Flask-Anwendung beginnen. Hier sind einige Beispiele für häufige Tests, die du möglicherweise schreiben möchtest:

  1. Einen Route testen:

    def test_hello(client):
        response = client.get("/")
        assert response.status_code == 200
        assert b"Hello, World!" in response.data

    Dieser Test sendet einen GET-Anfrage an die Wurzelroute ("/") und überprüft, dass der Antwortstatuscode 200 ist und die Antwortdaten den String "Hello, World!" enthalten.

  2. Einen POST-Anfrage testen:

    def test_login(client):
        response = client.post("/login", data={"username": "test", "password": "pass"})
        assert response.status_code == 200
        assert b"Logged in successfully" in response.data

    Dieser Test sendet eine POST-Anfrage an die Login-Route ("/login") mit Formulardaten, die einen Benutzernamen und ein Passwort enthalten. Es wird überprüft, dass der Antwortstatuscode 200 ist und die Antwortdaten den String "Logged in successfully" enthalten.

  3. Einen Befehl testen:

    def test_hello_command(runner):
        result = runner.invoke(args=["hello"])
        assert result.exit_code == 0
        assert "Hello, World!" in result.output

    Dieser Test ruft einen Befehl namens "hello" auf und überprüft, dass der Befehl mit einem Exit-Code von 0 beendet wird und die Ausgabe den String "Hello, World!" enthält.

Die Tests ausführen

Um die Tests auszuführen, navigiere im Terminal zum Stammordner deiner Flask-Anwendung und führe folgenden Befehl aus:

pytest

Dieser Befehl wird alle Tests im tests-Ordner finden und ausführen. Du solltest die Testergebnisse in der Terminalausgabe sehen.

Zusammenfassung

In diesem Lab hast du gelernt, wie du Flask-Anwendungen mit dem pytest-Framework testest. Du hast die Testumgebung eingerichtet, Tests für verschiedene Teile deiner Anwendung geschrieben und die Tests ausgeführt, um die Korrektheit deines Codes zu verifizieren. Das Testen ist ein essentieller Teil des Softwareentwicklungsprozesses, und das Schreiben von Tests für deine Flask-Anwendung wird dazu beitragen, ihre Zuverlässigkeit und Stabilität sicherzustellen.