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
DDDoriginal
2024-11-12 09:16:02587parcourir

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

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

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!

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