Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich in meinen Flask-Unit-Tests die Meldung „RuntimeError: Arbeiten außerhalb des Anwendungskontexts'?

Warum erhalte ich in meinen Flask-Unit-Tests die Meldung „RuntimeError: Arbeiten außerhalb des Anwendungskontexts'?

Linda Hamilton
Linda HamiltonOriginal
2024-11-11 22:04:021000Durchsuche

Why Am I Getting a

RuntimeError: Arbeiten außerhalb des Anwendungskontexts

In der angegebenen Flask-Anwendung ein Versuch, die before_request-Funktion in einem Komponententest aufzurufen (test .py) führt zu einem „RuntimeError: Arbeit außerhalb des Anwendungskontexts.“ Der gleiche Fehler tritt beim Aufruf der Funktion „input_info“ auf.

Hintergrund:

Flask verwaltet einen globalen Anwendungskontext, der Zugriff auf Dienste wie die Datenbankverbindung ermöglicht. Um im Kontext zu funktionieren, muss Code innerhalb des Anfrage-Antwort-Zyklus der Anwendung ausgeführt werden.

Lösung:

Um den Fehler zu beheben, müssen die Komponententests eine erstellen Anwendungskontext. Dies kann mit app.app_context() als Kontextmanager erreicht werden:

def test_connection(self):
    with app.app_context():
        # Test code here using `g.db`

Alternative Lösung:

Anstatt den Anwendungskontext manuell zu verwalten, können Sie ihn verwenden die Flask-Testing-Erweiterung, die automatisch den Kontext für Unit-Tests einrichtet.

Zusätzlich Überlegungen:

  • Stellen Sie sicher, dass die Datenbankverbindung nach der Verwendung geschlossen wird.
  • Verwenden Sie Fixtures oder Setup-Methoden, um die Datenbank zu initialisieren, bevor Sie die Tests ausführen.
  • Deaktivieren Sie den CSRF-Schutz von Flask für Unit-Tests.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in meinen Flask-Unit-Tests die Meldung „RuntimeError: Arbeiten außerhalb des Anwendungskontexts'?. 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