Rumah  >  Artikel  >  pangkalan data  >  Bagaimana Saya Membetulkan 'RuntimeError: Bekerja di Luar Konteks Aplikasi' dalam Ujian Flask?

Bagaimana Saya Membetulkan 'RuntimeError: Bekerja di Luar Konteks Aplikasi' dalam Ujian Flask?

Linda Hamilton
Linda Hamiltonasal
2024-11-13 15:34:02754semak imbas

How Do I Fix

RuntimeError: Operasi Luar Konteks Aplikasi

Dalam Flask, setiap permintaan menjana konteks aplikasi yang berfungsi sebagai konteks untuk pelbagai operasi. Semasa menguji aplikasi Flask, adalah perkara biasa untuk menghadapi ralat "RuntimeError: bekerja di luar konteks aplikasi". Ini berlaku apabila operasi dicuba di luar konteks yang ditentukan ini.

Untuk menangani isu ini, anda mesti mencipta konteks permintaan secara eksplisit dalam ujian unit anda. Dengan memasukkan app.app_context() ke dalam ujian anda, anda mewujudkan konteks yang diperlukan untuk melaksanakan operasi seperti sambungan pangkalan data atau pemaparan templat:

def test_connection1(self):
with app.app_context():
object = TestMySQL()
object.before_request()

Dengan membungkus kod ujian dalam konteks apl, anda memastikan operasi adalah dilakukan dalam konteks yang betul dan elakkan ralat Runtime. Selain itu, anda boleh menggunakan app.test_client() untuk mencipta klien ujian yang membenamkan konteks aplikasi dan meniru kesan permintaan biasa tanpa memerlukan permintaan HTTP sebenar.

client = app.test_client()
response = client.get('/')
assert response.status_code == 200

Ringkasnya, untuk mengelakkan ralat "RuntimeError: bekerja di luar konteks aplikasi" dan berjaya menguji aplikasi Flask, gunakan app.app_context() atau app.test_client() untuk mewujudkan konteks yang diperlukan untuk operasi khusus permintaan.

Atas ialah kandungan terperinci Bagaimana Saya Membetulkan 'RuntimeError: Bekerja di Luar Konteks Aplikasi' dalam Ujian Flask?. 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