我有一个具有以下结构的项目:
/
├── test
│ ├── __init__.py
│ └── test_do_stuff.py
└── my_package
├── do_stuff.py
├── helpers
│ ├── my_helper.py
│ └── __init__.py
├── __init__.py
└── main_do_stuff.py
运行测试时,我得到ImportError: No module named 'helpers'
当测试导入my_package.do_stuff
时,它会尝试导入helpers.my_helper
运行测试的命令是python3 -m unittest
(这是正确的方法吗?)
所有__init__.py
都是空的。
test_do_stuff.py:
import unittest
import my_package.do_stuff
# ...
do_stuff.py:
import helpers.my_helper
# ...
main_do_stuff.py:
import do_stuff
python3 my_package/main_do_stuff.py
有效。
主要调用与测试相同的功能。
问题是否来自我启动测试的方式?
还是我的结构?
我正在尝试找到一种解决方案,该解决方案不涉及过多地使用路径或编写大量代码来运行测试。 (应该有一种简单的方法可以将测试与代码分开吗?)
答案 0 :(得分:1)
问题是使用隐式相对导入:
import helpers.my_helper
应该是
import my_package.helpers.my_helper
答案 1 :(得分:0)
你的问题是python不接受你的目录hieracy。只需将测试文件放在根目录下(例如/ /所有内容),它就可以正常工作。你的导演看起来像这样:
/
└── everything
├── __init__.py
├── test_do_stuff.py
└── my_package
├── do_stuff.py
├── helpers
│ ├── my_helper.py
│ └── __init__.py
├── __init__.py
└── main_do_stuff.py