Maison  >  Article  >  base de données  >  Pourquoi est-ce que j'obtiens une « RuntimeError : travail en dehors du contexte de l'application » dans mes tests unitaires Flask ?

Pourquoi est-ce que j'obtiens une « RuntimeError : travail en dehors du contexte de l'application » dans mes tests unitaires Flask ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-11 22:04:02925parcourir

Why Am I Getting a

RuntimeError : Travailler en dehors du contexte de l'application

Dans l'application Flask donnée, une tentative d'appel de la fonction before_request dans un test unitaire (test .py) entraîne une « RuntimeError : fonctionnement en dehors du contexte de l'application ». La même erreur se produit lors de l'appel de la fonction input_info.

Contexte :

Flask gère un contexte d'application global qui donne accès à des services tels que la connexion à la base de données. Pour fonctionner dans le contexte, le code doit être exécuté dans le cycle requête-réponse de l'application.

Solution :

Pour résoudre l'erreur, les tests unitaires doivent établir un Contexte applicatif. Ceci peut être réalisé en utilisant app.app_context() comme gestionnaire de contexte :

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

Solution alternative :

Au lieu de gérer manuellement le contexte d'application, vous pouvez utiliser l'extension Flask-Testing, qui configure automatiquement le contexte des tests unitaires.

Supplémentaire Considérations :

  • Assurez-vous que la connexion à la base de données est fermée après utilisation.
  • Utilisez des appareils ou des méthodes de configuration pour initialiser la base de données avant d'exécuter les tests.
  • Désactivez la protection CSRF de Flask pour les tests unitaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn