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

为什么我在 Flask 单元测试中收到“运行时错误:在应用程序上下文之外工作”?

Linda Hamilton
Linda Hamilton原创
2024-11-11 22:04:02926浏览

Why Am I Getting a

RuntimeError:在应用程序上下文之外工作

在给定的 Flask 应用程序中,尝试在单元测试中调用 before_request 函数(测试.py)会导致“运行时错误:在应用程序上下文之外工作”。调用 input_info 函数时也会出现同样的错误。

背景:

Flask 管理一个全局应用程序上下文,提供对数据库连接等服务的访问。要在上下文中工作,代码需要在应用程序的请求-响应周期内运行。

解决方案:

要解决错误,单元测试必须建立一个应用程序上下文。这可以使用 app.app_context() 作为上下文管理器来实现:

def test_connection(self):
    with app.app_context():
        # Test code here using `g.db`

替代解决方案:

您可以使用Flask-Testing 扩展,它自动设置单元测试的上下文。

其他注意事项:

  • 确保使用后关闭数据库连接。
  • 在运行测试之前使用固定装置或设置方法初始化数据库。
  • 禁用 Flask 的 CSRF 保护以进行单元测试。

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

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