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 ?
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!