测试时访问 Flask 配置时出错

Cat*_*nin 4 python testing config flask

在为我的 Flask 应用程序编写测试时,我在尝试设置 Flask 配置设置时遇到了一个问题。

通常,我这样做:

import unittest

from factory import create_app


class ConfigTests(unittest.TestCase):

    def setUp(self):
        app = create_app('flask_test.cfg')
        app.testing = True
        self.app = app.test_client()

    def test_app_is_development(self):
        self.assertTrue(self.app.config['SECRET_KEY'] is 'secret_key')
        self.assertTrue(self.app.config['DEBUG'] is True)
Run Code Online (Sandbox Code Playgroud)

这导致了错误

AttributeError: 'FlaskClient' 对象没有属性 'config'

仅从调试中我看到没有“配置”属性,而是我不得不self.app.application.config让它工作。

import unittest

from factory import create_app


class ConfigTests(unittest.TestCase):

    def setUp(self):
        app = create_app('flask_test.cfg')
        app.testing = True
        self.app = app.test_client()

    def test_app_is_development(self):
        self.assertTrue(self.app.application.config['SECRET_KEY'] is 'secret_key')
        self.assertTrue(self.app.application.config['DEBUG'] is True)
Run Code Online (Sandbox Code Playgroud)

我在做什么,Flask 是否在更新中改变了这一点,或者有更好的方法来做到这一点?

编辑:在顶部块中错误地发布了代码,现在是正确的

gyx*_*-hh 5

app在生产型的flask.app.Flask,而你在测试中使用的一个是flask.testing.FlaskClient其中有2个不同的对象。您通过 using 访问配置的方式self.app.application.config是正确且唯一的方式,因为当您设置self.app = app.test_client()它返回 FlaskClient 实例时,我相信。

看看流动的:FlaskClienttest_client