Python 使用烧瓶登录进行单元测试时禁用@login_是必需的
我正在对使用flask登录扩展的flask应用程序进行单元测试 我正在使用webtest设置所有测试,如下所示:Python 使用烧瓶登录进行单元测试时禁用@login_是必需的,python,unit-testing,flask,webtest,flask-login,Python,Unit Testing,Flask,Webtest,Flask Login,我正在对使用flask登录扩展的flask应用程序进行单元测试 我正在使用webtest设置所有测试,如下所示: class TestCase(unittest.TestCase): def setUp(self): app.config['TESTING'] = True self.client = webtest.TestApp(app) 但是,当我试图通过self.client.get()访问url时,它用@login\u required修饰,
class TestCase(unittest.TestCase):
def setUp(self):
app.config['TESTING'] = True
self.client = webtest.TestApp(app)
但是,当我试图通过self.client.get()访问url时,它用@login\u required修饰,我收到一个401错误消息,提示我无权访问url
根据文件
而这个,,
将“TESTING”的配置值设置为True应该会禁用登录要求,但这似乎对我不起作用
有什么建议吗?我不确定这是否有帮助,但是: 在我的旧flaskr项目文件中,我的“flaskr.py”文件中有配置,它们看起来像这样:
# configuration
DATABASE = 'flaskr.db'
DEBUG = True
SECRET_KEY = 'development key'
USERNAME = 'admin'
PASSWORD = 'default'
所以也许你会
TESTING = True
?这是因为
Flask Login
cachingTESTING
或Login\u在init\u app
()上被禁用
所以,若您创建应用程序,然后在配置中设置一些内容,那个么配置更改将被忽略
更好的方法是使用具有分离配置的应用程序工厂进行生产和测试,它还可以降低在测试中未清理应用程序状态时出错的概率
重新登录管理器的最简单方法是:
class TestCase(unittest.TestCase):
def setUp(self):
app.config['TESTING'] = True
app.login_manager.init_app(app)
self.client = webtest.TestApp(app)
据说:
当设备运行时,可以方便地全局关闭身份验证
测试。要启用此功能,如果应用程序配置变量
LOGIN\u DISABLED设置为True,将忽略此装饰程序
如果您使用的是应用程序工厂设计模式,请将其添加到测试配置中:
LOGIN_DISABLED = True
或者,您可以在创建应用程序时添加它,如下所示:
class TestCase(unittest.TestCase):
def setUp(self):
app.config['LOGIN_DISABLED'] = True
self.client = webtest.TestApp(app)
希望这能帮助其他有同样问题的人正如您从上面的代码中看到的,我在每次测试之前为应用程序设置测试配置变量。在调试期间,我检查了配置,确实测试设置为True。似乎可以使用LOGIN\u DISABLED
,但不能使用TESTING
。