Mengapa Saya Mendapat 'RuntimeError: bekerja di luar konteks aplikasi' Semasa Menguji Apl Kelalang Saya?

Barbara Streisand
Lepaskan: 2024-11-11 03:13:02
asal
726 orang telah melayarinya

Why Am I Getting

Menyelesaikan masalah "RuntimeError: bekerja di luar konteks aplikasi"

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()
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan