让FlaskLogin与unittes一起工作

2024-03-28 20:36:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道在测试中默认禁用登录。我试图通过将app.config['LOGIN_DISABLED']设置为False来恢复它们。这似乎不起作用,因为current_user仍然返回None,但将在测试文件之外的代码中返回用户。在

下面是一些相关的代码位。我的Flask app对象最初是在我的应用程序的主__init__.py中创建的,在测试期间导入并重新配置。在

==========

初始化.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager

app = Flask(__name__)
app.config[u'DEBUG'] = settings.debug
db = SQLAlchemy(app)
login_manager = LoginManager()
login_manager.init_app(app)

==========

测试/基准.py在

^{pr2}$

==========

测试/测试

from flask_login import current_user
from my_app.tests.base import BaseTest

class MyTests(BaseTest):
  def test_a(self):
    #visit endpoint that calls `login_user(user)`
    #printing `current_user` in that endpoint works, but the following line only returns `None`
    print current_user

注意:用户必须在打印语句之前登录。在端点中使用current_user正如预期的那样工作。在


Tags: 代码用户frompyimportnoneconfigapp
1条回答
网友
1楼 · 发布于 2024-03-28 20:36:05

结果我的问题是由于测试没有使用相同的上下文,所以我的解决方案与描述的here和{a2}相似。tests/test_a.py现在看起来像:

from flask_login import current_user
from my_app.tests.base import BaseTest

class MyTests(BaseTest):
  def test_a(self):
    with self.app:
      print current_user

奇怪的是,app.config['LOGIN_DISABLED'] = False和{}在这个改变之后并不重要-两者都可以被删除。在

相关问题 更多 >