簡體   English   中英

用單元測試為Python項目導入模塊/軟件包的正確方法是什么?

[英]What is the correct way to import modules/packages for Python projects with unit tests?

我有以下目錄結構:

|_ director_script.py
|_ app/
      |_ __init__.py
      |_ ParentClass.py
      |_ my_module/
                 |_ __init__.py
                 |_ MyClass.py
                 |_ MyClassTestCase.py

在我的director_script.py我使用MyClass ,當我運行python director_script.py ,腳本按預期運行,沒有任何錯誤。 但是,當我進入my_module文件夾並使用python -m unittest MyClassTestCase運行單元測試時,出現錯誤:

ModuleNotFoundError: No module named 'app'

這是由MyClass.py中的import語句引起的,即

from app.ParentClass import ParentClass

當我從director_script.py運行它時,這種導入很好,並且僅在單元測試中發生。

您應該從app文件夾之外運行,任何具有__init__.py文件夾都是python中的子模塊。 如果將當前工作目錄設置為my_module,則它將看不到應用程序模塊,除非您具有與PYTHONPATH環境變量中設置的應用程序文件夾相對應的文件夾路徑

在頂層文件夾中添加一個名為__init__.py的文件

有點糾結,但這是我通常的做法:

import sys
sys.path.append('../app')

或在Windows下:

sys.path.append('..\\app')

當然,這需要在模塊導入之前進行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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