Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用烧瓶登录进行单元测试时禁用@login_是必需的_Python_Unit Testing_Flask_Webtest_Flask Login - Fatal编程技术网

Python 使用烧瓶登录进行单元测试时禁用@login_是必需的

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修饰,

我正在对使用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修饰,我收到一个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
caching
TESTING
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