簡體   English   中英

Python unittest發現無法導入源碼

[英]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"

運行測試發現時失敗並引發ModuleNotFoundCan not import a.py中的模塊或類

PS:我在settings.json中設置了PYTHONPATH ,代碼分析和程序啟動都正常。 但它似乎對unittest插件沒有幫助。 一個問題是srctest都有名為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM