Maison > base de données > tutoriel mysql > le corps du texte

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

Barbara Streisand
Libérer: 2024-11-11 03:13:02
original
726 Les gens l'ont consulté

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()
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal