Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

553
Vistas
Burlándose de current_app en la unidad Flask pytest

Quiero probar la unidad siguiente función:

 from flask import current_app def fuu(): current_app.logger.info('hello world') any = current_app.config['any']

Sin ningún manejo de contexto especial, recibo el siguiente mensaje de error:

 E This typically means that you attempted to use functionality that needed E to interface with the current application object in some way. To solve E this, set up an application context with app.app_context(). See the E documentation for more information.

Después de leer sobre el contexto de Flask, se me ocurrió una solución funcional :

 @classmethod def setUpClass(cls): app = app_factory.create_app() ctx = app.app_context() ctx.push() cls.app = app

Pero el punto es que no quiero tratar con ningún contexto de matraz en las pruebas UNIT . Quiero tener una prueba de unidad simple, en la que se pueda simular a todos los colaboradores, de modo que el sistema bajo prueba solo trate con la instancia simulada, en este caso también para current_app . Tener un contexto de matraz está bastante bien para las pruebas de integración, pero no para las pruebas unitarias.

Estoy buscando algo similar como esto:

 @patch('flask.current_app')

¿Hay alguna manera de lograr esto?

EDITAR #1

@GabrielC

servicio.py

 from flask import current_app def fuu(): current_app.logger.info('hello world')

test_servicio.py

 import unittest from unittest.mock import patch class TestService(unittest.TestCase): @patch('flask.current_app') def test_generate_image_happy_path(self, mock): from service import fuu fuu() assert 1 == 1

Esto falla por la misma razón exacta:

 E RuntimeError: Working outside of application context.
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Editar: corregir el parche cuando se usa from flask import current_app

servicio.py

 from flask import current_app def fuu(): current_app.logger.info('hello world')

test_servicio.py

 import unittest from unittest.mock import patch class TestService(unittest.TestCase): @patch('service.current_app') def test_generate_image_happy_path(self, mock): from service import fuu fuu() assert 1 == 1
over 4 years ago · Santiago Trujillo Denunciar

0

Respondiendo por cualquiera que se encuentre con el mismo problema. Lo que puede hacer es crear una aplicación Flask ficticia y usar su contexto en su prueba. No es necesario parchear nada.

 import unittest from service import fuu class TestService(unittest.TestCase): app = Flask('test') def test_generate_image_happy_path(self): with app.app_context(): fuu() assert 1 == 1

Por supuesto, si desea tener acceso a su configuración de Flask , tendrá que pasarla a esta aplicación ficticia.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda