首页  >  文章  >  数据库  >  为什么在测试我的 Flask 应用程序时出现“运行时错误:在应用程序上下文之外工作”?

为什么在测试我的 Flask 应用程序时出现“运行时错误:在应用程序上下文之外工作”?

Barbara Streisand
Barbara Streisand原创
2024-11-11 03:13:02721浏览

Why Am I Getting

排查“RuntimeError:在应用程序上下文之外工作”

在提供的代码中,访问数据库方法时遇到异常来自单元测试文件。具体来说,当从 test.py 文件中调用“before_request”函数和“input_info”路由时,会抛出“RuntimeError:在应用程序上下文之外工作”错误。

要解决此问题并启用数据库交互单元测试时,需要确保 Flask 应用程序上下文设置正确。 Flask 应用程序上下文管理特定于请求的状态,包括数据库连接。在请求上下文之外运行测试时,需要手动设置应用程序上下文。

这是 test.py 中测试代码的修改版本,其中包括必要的更改:

from app import app
from app import TestMySQL

class Test(unittest.TestCase):
    def test_connection(self):
        with app.app_context():
            object = TestMySQL()
            object.before_request()
            cursor = g.db.cursor()
            cursor.execute ('CREATE TABLE IF NOT EXISTS testmysql (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(40) NOT NULL, \
                     email VARCHAR(40) NOT NULL UNIQUE)')
            cursor.close()

通过将测试代码包装在 app.app_context() 调用中,我们建立应用程序上下文并确保所需的数据库连接对象可用。这将解决“RuntimeError:在应用程序上下文之外工作”异常,并允许在单元测试期间成功访问数据库方法。

以上是为什么在测试我的 Flask 应用程序时出现“运行时错误:在应用程序上下文之外工作”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn