我有一个具有以下结构的项目:

/
├── 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有效。
主要调用与测试相同的功能。

问题是否出自我启动测试的方式?

还是我的结构?

我正在尝试找到一种解决方案,该解决方案不涉及对路径的过多混乱或编写大量用于运行测试的代码。 (应该有一种简单的方法将测试与代码分开,不是吗?)

最佳答案

问题是使用隐式相对导入:

import helpers.my_helper

应该

import my_package.helpers.my_helper

关于python - 带有unittest和Multiples模块的ImportError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35970099/

10-12 03:51