我正在开发一个Flask应用程序,并使用Flask-security进行用户身份验证(其又使用Flask-login在下面).
我有一个需要身份验证的路由,/ user.我正在尝试编写一个单元测试,测试一下,对于经过身份验证的用户,这将返回相应的响应.
from unittest import TestCase from app import app,db from models import User from flask_security.utils import login_user class UserTest(TestCase): def setUp(self): self.app = app self.client = self.app.test_client() self._ctx = self.app.test_request_context() self._ctx.push() db.create_all() def tearDown(self): if self._ctx is not None: self._ctx.pop() db.session.remove() db.drop_all() def test_user_authentication(): # (the test case is within a test request context) user = User(active=True) db.session.add(user) db.session.commit() login_user(user) # current_user here is the user print(current_user) # current_user within this request is an anonymous user r = test_client.get('/user')
在测试中,current_user返回正确的用户.但是,请求的视图总是返回一个AnonymousUser作为current_user.
/用户路由定义为:
class CurrentUser(Resource): def get(self): return current_user # returns an AnonymousUser
我相当确定我只是不完全了解如何测试Flask请求上下文.我读过这个Flask Request Context documentation一堆,但是我仍然不了解如何处理这个特定的单元测试.