Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan RuntimeError: Bekerja di Luar Konteks Aplikasi dalam Ujian Unit Flask?

Bagaimana untuk Menyelesaikan RuntimeError: Bekerja di Luar Konteks Aplikasi dalam Ujian Unit Flask?

DDD
Lepaskan: 2024-11-12 09:16:02
asal
588 orang telah melayarinya

How to Resolve RuntimeError: Working Outside of Application Context in Flask Unit Tests?

RuntimeError: Bekerja di Luar Konteks Aplikasi

Pernyataan Masalah:
Apabila mencuba ujian unit pada aplikasi Flask, memanggil 'before_request ' fungsi dari luar konteks aplikasi menimbulkan RuntimeError:

with patch('__main__.mysql.connector.connect') as mock_mysql_connector_connect:
  object = TestMySQL()
  object.before_request()  # Runtime error on calling this
Salin selepas log masuk

Punca Punca:
Flask menggunakan Konteks Aplikasi untuk mengurus data khusus permintaan. Apabila memanggil fungsi di luar konteks ini, seperti dalam ujian unit, sumber yang diperlukan tidak tersedia, membawa kepada ralat yang disebutkan di atas.

Penyelesaian:
Untuk menyelesaikan isu ini, ujian unit mesti dilaksanakan dalam Konteks Aplikasi. Ini boleh dicapai menggunakan penghias 'app_context()':

def test_connection(self):
    with app.app_context():
        # Test code here
Salin selepas log masuk

Sebagai alternatif, panggilan 'app_context()' boleh dirangkumkan dalam kaedah persediaan ujian.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan RuntimeError: Bekerja di Luar Konteks Aplikasi dalam Ujian Unit Flask?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan