how to mock a method decorated with Python Flask route()
This is a little hacky but you could inject a logger.
@app.route(...):def hello(logger=None): logger = logger or self.logger logger.info(...) return ...def test_...(self): logger = MagicMock() self.app.get(logger) self.assertTrue(logger.info.called)
from functools import wrapsimport loggingfrom datetime import datetimelogging.basicConfig(filename=datetime.now().strftime('%d_%m_%Y.log'),level=logging.INFO)def logger_required(f): @wraps(f) def decorated(*args, **kwargs): logging.info(f.__name__ + ' was called') return f(*args, **kwargs) return decorated @app.route('/hello')@logger_requireddef hello(): # I want to assert that this gets called return 'Hello, World'