首頁 > 後端開發 > Python教學 > 在分層專案結構中使用 pytest 時,如何修復「ImportError: No Module Named...」錯誤?

在分層專案結構中使用 pytest 時,如何修復「ImportError: No Module Named...」錯誤?

DDD
發布: 2024-12-01 09:31:14
原創
795 人瀏覽過

How Can I Fix

解決pytest 的模組導入錯誤的PATH 問題

當使用pytest 在具有分層文件結構的項目上運行測試時,您可以從應用程式路徑匯入模組時遇到「ImportError:沒有名為...的模組」錯誤。這個問題是因為需要修改 sys.path 以包含必要模組的路徑。

pytest >= 7 的建議方法:pythonpath 設定

pytest 版本 7 以上版本提供了使用 pythonpath 設定值的簡化解決方案。這允許您將特定路徑新增至 sys.path,而不需要解決方法。在設定檔(pyproject.toml 或 pytest.ini)中,您可以指定要包含的路徑,例如:

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

Original Answer for pytest 7:conftest解決方案

如果您使用的是舊版的pytest(低於7),您可以使用空的conftest.py解決方案。這涉及在專案根目錄中建立一個空的 conftest.py 檔案。這會觸發 pytest 會自動將 conftest.py 檔案的父目錄加入到 sys.path 中,解決匯入問題。

說明

Pytest 在期間掃描 conftest 模組測試集合以收集客製化掛鉤和固定裝置。若要從這些模組匯入自訂對象,pytest 將 conftest.py 的父目錄新增到 sys.path。

替代解決方案

此問題有其他解決方案,取決於在您的專案結構上:
  • 包根目錄:
  • 將conftest.py檔案放在包根目錄中,該目錄包含子包但本身不是包(沒有__init__.py檔)。
  • src佈局:
  • 雖然可以與src 佈局,將 conftest.py 放在 src 目錄中可能會抵消 src 佈局的好處。相反,可以考慮將其放在包根目錄中。

結論

透過調整sys.path 或使用conftest.py 解決方案,可以解決「ImportError:沒有名為...的模組」錯誤並確保在pytest 環境中成功執行測試。

以上是在分層專案結構中使用 pytest 時,如何修復「ImportError: No Module Named...」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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