Я использую фабричный шаблон во Flask.Это упрощенная версия моего кода:
def create_app():
app = Flask(__name__)
@app.before_request
def update_last_seen():
if current_user.is_authenticated:
current_user.update(last_seen=arrow.utcnow().datetime)
@app.route('/', methods=['GET'])
def home():
return render_template("home.html")
return app
Я использую pytest-flask
, и я хотел бы иметь возможность написать тест для функции update_last_seen
.
Какя могу получить доступ к этой функции?Я не могу найти его ни в client.application (client
- это прибор, автоматически используемый через pytest-flask), ни в моем app
приборе, который я установил через conftest.py
, например:
@pytest.fixture
def app():
os.environ["FLASK_ENV"] = "test"
os.environ["MONGO_DB"] = "test"
os.environ["MONGO_URI"] = 'mongomock://localhost'
app = create_app()
app.config['ENV'] = 'test'
app.config['DEBUG'] = True
app.config['TESTING'] = True
app.config['WTF_CSRF_ENABLED'] = False
return app
Поэтому, когда я запускаю этот тест:
def test_previous_visit_is_stored_in_session(app, client):
app.update_last_seen()
Я получаю ошибку:
def test_previous_visit_is_stored_in_session(app, client):
> app.update_last_seen()
E AttributeError: 'Flask' object has no attribute 'update_last_seen'
Я тоже просматривал app.before_request_funcs
, но, к сожалению, безрезультатно.