在提供的代码中,访问数据库方法时遇到异常来自单元测试文件。具体来说,当从 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中文网其他相关文章!