2017-09-23 86 views
1

我很難理解軟件包,特別是如何在軟件包中使用unittest。我看了這個問題(),但是這個問題的正確答案並沒有解決我的問題。我有以下結構:Python單元測試導入問題

model 
|-- __init__.py 
|-- boardmodel.py 
| 
|-- exceptions 
| | 
| |-- __init__.py 
| |-- exceptions.py 
| 
|-- test 
    |-- __init__.py 
    |-- test_boardmodel.py 

與以下文件/導入:

模型/ __ init__.py:

import model.exceptions.exceptions 
import model.boardmodel 

模型/異常/ __ init__.py:

無內容

模型/測試/ __ init__.py:

包含裏面什麼也沒有boardmodel.py

進口:

from model.exceptions.exceptions import ZeroError, OverlapError, ArgumentError, ProximityError 

進口內test_boardmodel.py:

import unittest 

from model.boardmodel import Board, Ball, Wall 
from model.exceptions.exceptions import ProximityError 

我把自己放在模型目錄下,我運行python -m unittest test.test_boardmodel.py。我得到以下信息:

ERROR: test_boardmodel (unittest.loader._FailedTest) 
---------------------------------------------------------------------- 
ImportError: Failed to import test module: test_boardmodel 
Traceback (most recent call last): 
    File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 153, in loadTestsFromName 
    module = __import__(module_name) 
    File "/Users/sahandzarrinkoub/Documents/Programming/pythonfun/BouncingBalls/balls/src/model/test/test_boardmodel.py", line 3, in <module> 
    from model.boardmodel import Board, Ball, Wall 
ModuleNotFoundError: No module named 'model' 

我有點隨囗如何工作和模塊/包看了什麼位置時,執行的import語句丟失。爲什麼找不到model

我要補充一點,如果我從列出的所有進口刪除model.,測試工作,但我不能從「外部」再使用包裝:

src 
|-- visual.py 
| 
|-- model 
    |-- __init__.py 
    |-- boardmodel.py 
    | 
    |-- exceptions 
    | | 
    | |-- __init__.py 
    | |-- exceptions.py 
    | 
    |-- test 
     |-- __init__.py 
     |-- test_boardmodel.py 

visual.py:

import model 
from model.boardmodel import Board 

回答

0

我面臨同樣的問題,能夠從多個文件導入一些模塊,但不能從一個測試文件,所以我看到這個解決方案:

如果你有測試/ my_test.py,測試應該運行爲:

python -m test.my_test 

在那之後,我進口我想要的東西,並沒有得到錯誤。