Intento implementar pruebas unitarias con Pytest en una aplicación Flask y me cuesta mucho hacerlo.
La aplicación My Flask usa archivos de configuración en la mayoría de las funciones (aquí some_method) para ilustrar. Entonces parece que debería proporcionar un contexto para cada llamada a cualquier método que me gustaría probar. Parece que puedo lograrlo con "with app.app_context():" en cada llamada.
Leí la documentación de prueba oficial pero hablan de crear un cliente. Como me gustaría hacer pruebas unitarias, necesito llamar a funciones secundarias que no son de nivel superior.
¿Hay alguna manera de proporcionar siempre un contexto sin presionar el contexto manualmente en cada llamada?
A continuación encontrará mi implementación actual:
principal.py
from flask import current_app def main(request): current_app.config.from_envvar('APPLICATION_SETTINGS') print(some_method()) return 'OK' def some_method(): # doing some stuff using the context world = current_app.config['SECRET_KEY'] return worldtest_main.py
import pytest from flask import current_app, Flask from main import main, some_method @pytest.fixture def app(): app = Flask(__name__) # load here any potential configuration configuration return app def test_some_method(app): with app.app_context(): # calling and doing some assertion some_method()PD: no tengo app = Flask ( name ) en mi archivo principal porque estoy ejecutando Functions Framework
pytest-flask parece configurar el contexto en cualquier llamada.
concurso.py
import pytest from flask import Flask @pytest.fixture def app(): app = Flask(__name__) return apptest_main.py
import pytest from flask import current_app, Flask from main import main, some_method def test_some_method(app): #with app.app_context(): # calling and doing some assertion some_method()obras.