how to mock a method decorated with Python Flask route() how to mock a method decorated with Python Flask route() flask flask

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'