def url_for(*args, **kwargs): """ `flask.url_for`는 flask 앱의 context가 필요합니다. 따라서 context안에서 생성한 url을 가져와서 사용하면됩니다. 테스트 코드 내부에서 그냥 `flask.url_for`를 사용하면 에러가 나게됩니다. """ with app.test_request_context() as ctx_: return flask_url_for(*args, **kwargs)
def f_session(request): with app.test_request_context() as _ctx: Session = sessionmaker(autocommit=False, autoflush=False) app.config['DATABASE_URL'] = 'sqlite:///test.db' engine = get_engine(app) Base.metadata.create_all(engine) _ctx.push() session = Session(bind=engine) setattr(g, 'sess', session) def finish(): session.close() Base.metadata.drop_all(engine) engine.dispose() request.addfinalizer(finish) return session