Apabila menghadapi ralat "ImportError: No module named..." semasa menggunakan pytest, adalah penting untuk dipertimbangkan isu kemungkinan konfigurasi PATH, terutamanya pada sistem Linux atau Windows. Dalam kes khusus ini, pengguna telah memasang pytest menggunakan easy_install pada Mac dan menghadapi masalah semasa menguji projek dengan struktur fail berikut:
repo/ |--app.py |--settings.py |--models.py |--tests/ |--test_app.py
Untuk menyelesaikan isu ini, pendekatan berikut disyorkan:
Pytest telah memperkenalkan pemalam teras yang membolehkan pengubahsuaian sys.path melalui tetapan konfigurasi 'pythonpath'. Penyelesaian yang dipermudahkan ini melibatkan penambahan baris berikut pada fail pyproject.toml atau pytest.ini projek anda:
# pyproject.toml [tool.pytest.ini_options] pythonpath = [ "." ] # pytest.ini [pytest] pythonpath = .
Dengan menentukan entri laluan berbanding direktori akar, anda dengan berkesan menambah direktori itu ke sys.path, menyelesaikan isu import.
Untuk versi pytest yang lebih lama, pendekatan yang kurang invasif melibatkan mencipta fail kosong bernama 'conftest.py' dalam direktori akar projek:
$ touch repo/conftest.py
Dengan berbuat demikian, pytest secara automatik akan menambah direktori induk bagi 'conftest.py' ke sys.path, membolehkan import berjaya.
Pytest mencari modul 'conftest' semasa pengumpulan ujian untuk mengumpulkan tersuai cangkuk dan lekapan. Untuk mengimport objek tersuai ini, pytest menambah direktori induk 'conftest.py' pada sys.path.
Pendekatan yang disyorkan untuk menyelesaikan isu import dalam pytest bergantung pada versi yang anda gunakan. Untuk pytest >= 7, konfigurasi 'pythonpath' diutamakan, manakala untuk pytest < 7, penyelesaian 'conftest' kekal berkesan.
Atas ialah kandungan terperinci Bagaimana Saya Membetulkan 'ImportError: Tiada modul bernama...' Ralat dalam Pytest?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!