单元测试和多个模块的 ImportError
ImportError with unittest and multiples modules
我有一个结构如下的项目:
/
├── 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
有效。
主要调用与测试相同的功能。
问题是否出在我启动测试的方式上?
还是我的结构?
我正在尝试找到一种解决方案,该解决方案不会过多地弄乱路径或只为 运行 测试编写大量代码。 (应该有一种简单的方法将测试与代码分开,不是吗?)
您的问题是 python 不接受您的目录层次结构。只需将测试文件放在根目录下(例如 /everything ),它就可以正常工作。您的目录可能如下所示:
/
└── everything
├── __init__.py
├── test_do_stuff.py
└── my_package
├── do_stuff.py
├── helpers
│ ├── my_helper.py
│ └── __init__.py
├── __init__.py
└── main_do_stuff.py
问题是隐式相对导入的使用:
import helpers.my_helper
应该是
import my_package.helpers.my_helper
我有一个结构如下的项目:
/
├── 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
有效。
主要调用与测试相同的功能。
问题是否出在我启动测试的方式上?
还是我的结构?
我正在尝试找到一种解决方案,该解决方案不会过多地弄乱路径或只为 运行 测试编写大量代码。 (应该有一种简单的方法将测试与代码分开,不是吗?)
您的问题是 python 不接受您的目录层次结构。只需将测试文件放在根目录下(例如 /everything ),它就可以正常工作。您的目录可能如下所示:
/
└── everything
├── __init__.py
├── test_do_stuff.py
└── my_package
├── do_stuff.py
├── helpers
│ ├── my_helper.py
│ └── __init__.py
├── __init__.py
└── main_do_stuff.py
问题是隐式相对导入的使用:
import helpers.my_helper
应该是
import my_package.helpers.my_helper