Maison > base de données > tutoriel mysql > Comment résoudre RuntimeError : travailler en dehors du contexte d'application dans les tests unitaires Flask ?

Comment résoudre RuntimeError : travailler en dehors du contexte d'application dans les tests unitaires Flask ?

DDD
Libérer: 2024-11-12 09:16:02
original
594 Les gens l'ont consulté

How to Resolve RuntimeError: Working Outside of Application Context in Flask Unit Tests?

RuntimeError : Travailler en dehors du contexte de l'application

Énoncé du problème :
Lors d'une tentative de test unitaire sur une application Flask, l'appel de 'before_request ' en dehors du contexte de l'application génère une RuntimeError :

with patch('__main__.mysql.connector.connect') as mock_mysql_connector_connect:
  object = TestMySQL()
  object.before_request()  # Runtime error on calling this
Copier après la connexion

Root Cause :
Flask utilise un contexte d'application pour gérer les données spécifiques à la requête. Lors de l'appel de fonctions en dehors de ce contexte, comme dans le test unitaire, les ressources nécessaires ne sont pas disponibles, entraînant l'erreur susmentionnée.

Solution :
Pour résoudre ce problème, le le test unitaire doit être exécuté dans le contexte d’application. Ceci peut être réalisé en utilisant le décorateur 'app_context()' :

def test_connection(self):
    with app.app_context():
        # Test code here
Copier après la connexion

Alternativement, l'appel 'app_context()' peut être encapsulé dans une méthode de configuration de test.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal