提供されたコードでは、データベース メソッドにアクセスするときに例外が発生します単体テストファイルから。具体的には、test.py ファイルから「before_request」関数と「input_info」ルートを呼び出すと、「RuntimeError: workingOutside of application context」エラーがスローされます。
この問題を解決し、データベース内での対話を有効にするには単体テストでは、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 アプリをテストすると「RuntimeError: working out of application context」というメッセージが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。