[英]Python unittest discovery can not import source code
我正在使用 VSCode 中集成的 Python unittest 進行測試。 我有這樣的目錄
project_root/
src/
module/
__init__.py
a.py
test/
module/
__init__.py
test_a.py
test_a.py
有 import from module.a import SomeClass
我有參數
"-v",
"-s",
"./test",
"-p",
"test*.py"
運行測試發現時失敗並引發ModuleNotFound
或Can not import
a.py
中的模塊或類
PS:我在settings.json
中設置了PYTHONPATH
,代碼分析和程序啟動都正常。 但它似乎對unittest
插件沒有幫助。 一個問題是src
和test
都有名為module
的模塊,我不確定這是否重要。
如何讓它發揮作用?
更新:似乎是名稱沖突問題,unittest_discovery 無法處理。 在我將 args 更改為-s./test/module
之后,它可以導入 src 模塊。
您需要在.env
文件中配置PYTHONPATH
。
何時使用 PYTHONPATH 的一個示例是,如果您在 src 文件夾中有源代碼,而在測試文件夾中有測試。 但是,在運行測試時,這些測試通常無法訪問 src 中的模塊,除非您對相對路徑進行硬編碼。
要解決此問題,您可以通過在 VS Code 工作區中創建一個 .env 文件,將 src 的路徑添加到 PYTHONPATH 。
PythonPATH=src
因為
使用終端設置時,PYTHONPATH 會影響用戶在終端內運行的任何工具,以及擴展為通過終端路由的用戶執行的任何操作,例如調試。 但是,在這種情況下,當擴展正在執行不通過終端路由的操作時,例如使用linter 或格式化程序,則此設置不會對模塊查找產生影響。
您可以參考官方文檔了解更多詳情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.