2017-09-23 55 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 

在那之后,我进口我想要的东西,并没有得到错误。