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:
Installiere das
pytest-Framework, indem du folgenden Befehl ausführst:pip install pytestErstelle in einem Ordner namens
testsdeiner Flask-Anwendung eine neue Datei namensconftest.py.Importiere in der Datei
conftest.pydie erforderlichen Module:import pytest from my_app import create_appDefiniere einen Fixture namens
app, der eine App-Instanz erstellt und konfiguriert:@pytest.fixture() def app(): app = create_app() app.config.update({ "TESTING": True, }) yield appBeachte, dass du den Fixture entsprechend anpassen solltest, wenn du das Anwendungsfactory-Pattern verwendest.
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:
Einen Route testen:
def test_hello(client): response = client.get("/") assert response.status_code == 200 assert b"Hello, World!" in response.dataDieser Test sendet einen GET-Anfrage an die Wurzelroute ("/") und überprüft, dass der Antwortstatuscode 200 ist und die Antwortdaten den String "Hello, World!" enthalten.
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.dataDieser 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.
Einen Befehl testen:
def test_hello_command(runner): result = runner.invoke(args=["hello"]) assert result.exit_code == 0 assert "Hello, World!" in result.outputDieser 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.