Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python单元测试导入问题_Python_Unit Testing_Packages - Fatal编程技术网

Python单元测试导入问题

Python单元测试导入问题,python,unit-testing,packages,Python,Unit Testing,Packages,我很难理解软件包,尤其是如何在软件包中使用unittest。我看了这个问题(),但这个问题的正确答案并没有解决我的问题。我的结构如下: model |-- __init__.py |-- boardmodel.py | |-- exceptions | | | |-- __init__.py | |-- exceptions.py | |-- test |-- __init__.py |-- test_boardmodel.py 使用以下文件/导入: model/\

我很难理解软件包,尤其是如何在软件包中使用unittest。我看了这个问题(),但这个问题的正确答案并没有解决我的问题。我的结构如下:

model
|-- __init__.py
|-- boardmodel.py
|
|-- exceptions
|   |
|   |-- __init__.py
|   |-- exceptions.py
|
|-- test
    |-- __init__.py
    |-- test_boardmodel.py
使用以下文件/导入:

model/\uuu init.py:

import model.exceptions.exceptions
import model.boardmodel
import unittest

from model.boardmodel import Board, Ball, Wall
from model.exceptions.exceptions import ProximityError
import model
from model.boardmodel import Board
model/exceptions/\uuuuu init\uuuuuuuu.py:

import model.exceptions.exceptions
import model.boardmodel
import unittest

from model.boardmodel import Board, Ball, Wall
from model.exceptions.exceptions import ProximityError
import model
from model.boardmodel import Board
不包含任何内容

model/test/\uuuuu init.py:

import model.exceptions.exceptions
import model.boardmodel
import unittest

from model.boardmodel import Board, Ball, Wall
from model.exceptions.exceptions import ProximityError
import model
from model.boardmodel import Board
不包含任何内容

在boardmodel.py内部导入::

from model.exceptions.exceptions import ZeroError, OverlapError, ArgumentError, ProximityError
导入内部测试板模型。py:

import model.exceptions.exceptions
import model.boardmodel
import unittest

from model.boardmodel import Board, Ball, Wall
from model.exceptions.exceptions import ProximityError
import model
from model.boardmodel import Board
我将自己放在model目录中,运行
python-m unittest.test\u 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'
内部visual.py:

import model.exceptions.exceptions
import model.boardmodel
import unittest

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

我也面临同样的问题,能够从多个文件导入一些模块,但不能从测试文件导入,因此我看到了这个解决方案:

如果您有test/my_test.py,测试应按以下方式运行:

python -m test.my_test

在此之后,我导入了我想要的内容,但没有出现任何错误。

尝试在导入语句上方添加以下内容:

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))

我认为标准的包结构是

  myproject
  ├── myproject
  ├── tests
  └── scripts
如果要在不安装软件包的情况下运行测试,请从顶部的
myproject
文件夹运行它们,这样
import myproject
将在测试中成功。(与脚本类似。)要使其工作,请在
myproject
中使用绝对导入或显式相对导入