Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Saya Membetulkan 'ImportError: Tiada modul bernama...' Ralat dalam Pytest?

Bagaimana Saya Membetulkan 'ImportError: Tiada modul bernama...' Ralat dalam Pytest?

Susan Sarandon
Susan Sarandonasal
2024-12-04 13:29:11760semak imbas

How Do I Fix

Mengatasi ImportError: Tiada Modul Dinamakan Isu dengan Pytest

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:

1. Menggunakan Konfigurasi 'pythonpath' (Pytest >= 7)

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.

2. Melaksanakan Penyelesaian 'conftest' (Pytest < 7)

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.

Penjelasan:

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.

Kesimpulan:

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!

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