首頁 > 後端開發 > Python教學 > 如何解決由於路徑問題導致的 pytest 中的'ImportError: No module name...”問題?

如何解決由於路徑問題導致的 pytest 中的'ImportError: No module name...”問題?

Linda Hamilton
發布: 2024-12-16 12:33:12
原創
949 人瀏覽過

How to Solve

pytest 的 PATH 問題:「ImportError: No module nameed...」

使用 pytest 時,常常會因為路徑問題而遇到 ImportError 異常。這在不同的作業系統和專案結構中尤其普遍。讓我們解決這個問題並探索潛在的解決方案。

Conftest 解(pytest

解決路徑問題的有效方法是利用 conftest.py 檔案。 Pytest 在測試收集期間搜尋 conftest 模組以收集自訂掛鉤和固定裝置。透過將空的 conftest.py 檔案放置在專案的根目錄(執行 pytest 的位置)中,pytest 會自動將父目錄新增至 sys.path,使您的應用程式模組可供匯入。

範例:

對於這樣的專案結構:

repo/
   |--app.py
   |--settings.py
   |--models.py
   |--tests/
          |--test_app.py
登入後複製

只要將一個空的conftest.py 檔案加入repo/

Pythonpath設定(pytest >= 7)

對於最新版本的pytest(7及更高版本),更方便的解決方案是利用 pythonpath 設定。這允許您直接透過 pytest 設定修改 sys.path。在 pyproject.toml 或 pytest.ini 檔案中,加入以下內容:

[tool.pytest.ini_options]
pythonpath = ["."]
登入後複製

這是一種更簡潔的方法,不需要任何自訂程式碼或對 sys.path 進行操作。

其他注意事項

專案結構:根據情況調整conftest.py檔案或pythonpath配置的位置你的專案結構。例如,在典型的基於 src 的佈局中,將 conftest.py 放在 src 目錄中,而不是根目錄中。

src 佈局: 將 src 加入 PYTHONPATH 時要小心。它可能會破壞使用 src 佈局的好處,因為您最終測試的是儲存庫程式碼而不是已安裝的套件。

以上是如何解決由於路徑問題導致的 pytest 中的'ImportError: No module name...”問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板