Dalam kod yang disediakan, pengecualian ditemui apabila mengakses kaedah pangkalan data daripada fail ujian unit. Khususnya, ralat "RuntimeError: bekerja di luar konteks aplikasi" dilemparkan apabila memanggil fungsi "before_request" dan laluan "input_info" daripada fail test.py.
Untuk menangani isu ini dan mendayakan interaksi pangkalan data dalam ujian unit, adalah perlu untuk memastikan bahawa konteks aplikasi Flask disediakan dengan betul. Konteks aplikasi Flask mengurus keadaan khusus permintaan, termasuk sambungan pangkalan data. Apabila menjalankan ujian di luar konteks permintaan, anda perlu menyediakan konteks aplikasi secara manual.
Berikut ialah versi ubah suai kod ujian anda dalam test.py yang merangkumi perubahan yang diperlukan:
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()
Dengan membungkus kod ujian di dalam panggilan app.app_context(), kami mewujudkan konteks aplikasi dan memastikan objek sambungan pangkalan data yang diperlukan tersedia. Ini akan menyelesaikan pengecualian "RuntimeError: bekerja di luar konteks aplikasi" dan membenarkan kaedah pangkalan data berjaya diakses semasa ujian unit.
Atas ialah kandungan terperinci Mengapa Saya Mendapat 'RuntimeError: bekerja di luar konteks aplikasi' Semasa Menguji Apl Kelalang Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!