我有以下布局:
/spamalot
/spam
__init__.py
spam.py
/spam_on_eggs
__init__.py
spam_on_eggs.py
/tests
test_spam.py
垃圾邮件恰好是一个烧瓶应用程序。
在spam.py
我有
import spam_on_eggs.spam_on_eggs as eggs
# Other Flask setup & application code here.
这很好用 - 从spamalot
我能够运行的目录中python spam/spam.py
但是,当我开始将测试加入其中时,它就没有那么棒了。
在我的test_spam.py
文件中,我有:
import spam.spam
test_client = spam.spam.app.test_client()
def test_it_fails():
assert False
但是,它并没有在我期望的地方失败,而是在导入行失败:
/spamalot/ $ py.test
# some output
E ImportError
__init__.py
我可以通过放入我的文件夹来解决这个问题/tests
,但是我得到了一个不同的 ImportError:
spam/spam.py:1: in <module>
> import spam_on_eggs.spam_on_eggs as eggs
E ImportError: No module named 'spam_on_eggs'
我可以通过将行更改为:
from spam.spam_on_eggs import spam_on_eggs
这让我可以进行测试,但后来我破坏了我的跑步能力$ python spam/spam.py
——因为我得到了
ImportError: no module named 'spam'
显然,我对模块导入如何工作以及 py.test 如何与该系统一起工作的理解存在差距。
我错过了什么?
是否有可能拥有我所描述的布局 - 并且能够从 spamalot 目录运行 py.test 和我的服务器?