Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat 'RuntimeError: Bekerja di Luar Konteks Aplikasi' dalam Ujian Unit Kelalang Saya?

Mengapa Saya Mendapat 'RuntimeError: Bekerja di Luar Konteks Aplikasi' dalam Ujian Unit Kelalang Saya?

Linda Hamilton
Linda Hamiltonasal
2024-11-11 22:04:021000semak imbas

Why Am I Getting a

RuntimeError: Bekerja di Luar Konteks Aplikasi

Dalam aplikasi Flask yang diberikan, percubaan untuk memanggil fungsi before_request dalam ujian unit (ujian .py) menghasilkan "RuntimeError: bekerja di luar konteks aplikasi." Ralat yang sama berlaku apabila memanggil fungsi input_info.

Latar Belakang:

Flask menguruskan Konteks Aplikasi global yang menyediakan akses kepada perkhidmatan seperti sambungan pangkalan data. Untuk berfungsi dalam konteks, kod perlu dijalankan dalam kitaran permintaan-tindak balas aplikasi.

Penyelesaian:

Untuk menyelesaikan ralat, ujian unit mesti mewujudkan Konteks Aplikasi. Ini boleh dicapai menggunakan app.app_context() sebagai pengurus konteks:

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

Penyelesaian Alternatif:

Daripada mengurus Konteks Aplikasi secara manual, anda boleh menggunakan sambungan Pengujian Flask, yang menyediakan konteks secara automatik untuk ujian unit.

Tambahan Pertimbangan:

  • Pastikan sambungan pangkalan data ditutup selepas digunakan.
  • Gunakan lekapan atau kaedah persediaan untuk memulakan pangkalan data sebelum menjalankan ujian.
  • Lumpuhkan perlindungan CSRF Flask untuk ujian unit.

Atas ialah kandungan terperinci Mengapa Saya Mendapat 'RuntimeError: Bekerja di Luar Konteks Aplikasi' dalam Ujian Unit Kelalang Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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