Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

555
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda