Maison  >  Article  >  base de données  >  Pourquoi est-ce que j'obtiens « RuntimeError : travailler en dehors du contexte de l'application » lors du test de mon application Flask ?

Pourquoi est-ce que j'obtiens « RuntimeError : travailler en dehors du contexte de l'application » lors du test de mon application Flask ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-11 03:13:02723parcourir

Why Am I Getting

Dépannage "RuntimeError : travail en dehors du contexte de l'application"

Dans le code fourni, une exception est rencontrée lors de l'accès aux méthodes de base de données à partir du fichier de test unitaire. Plus précisément, l'erreur « RuntimeError : travailler en dehors du contexte de l'application » est générée lors de l'appel de la fonction « before_request » et de la route « input_info » à partir du fichier test.py.

Pour résoudre ce problème et activer les interactions de base de données dans Lors des tests unitaires, il est nécessaire de s'assurer que le contexte de l'application Flask est correctement paramétré. Le contexte d'application Flask gère l'état spécifique à la demande, y compris les connexions à la base de données. Lors de l'exécution de tests en dehors du contexte d'une requête, il est nécessaire de configurer manuellement le contexte de l'application.

Voici une version modifiée de votre code de test dans test.py qui inclut les modifications nécessaires :

from app import app
from app import TestMySQL

class Test(unittest.TestCase):
    def test_connection(self):
        with app.app_context():
            object = TestMySQL()
            object.before_request()
            cursor = g.db.cursor()
            cursor.execute ('CREATE TABLE IF NOT EXISTS testmysql (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(40) NOT NULL, \
                     email VARCHAR(40) NOT NULL UNIQUE)')
            cursor.close()

En encapsulant le code de test dans l'appel app.app_context(), nous établissons le contexte de l'application et garantissons que les objets de connexion à la base de données requis sont disponibles. Cela résoudra l'exception « RuntimeError : travail en dehors du contexte de l'application » et permettra d'accéder avec succès aux méthodes de la base de données pendant 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