这是一个经常以不同形式被问到的问题,并且经常得到“哈哈,你做得不对”的回答。很确定这是因为人们(包括我)尝试使用一个常识性场景作为实现,并且解决方案并不明显(如果您以前没有这样做过)。
会接受“让飞出瓶子”的答案。
Given
project/
__init__.py
/code
__init__.py
sut.py
/tests
__init__.py
test_sut.py
其中tests_sut.py开始:
import code.sut
在根目录中运行鼻子测试会导致:
ImportError: No module named code.sut
走过的大道:
a) 做一个亲戚使用
from ..code import sut
b) 将项目的根目录添加到 PYTHONPATH
c) 使用
sys.path.append
在每个测试模块开始处的导入之前添加 .. 路径。
d) 只需记住做一个
setup.py
在项目上,在运行测试之前将模块安装到站点包中。
因此,要求是让测试位于可以访问项目的测试包根目录下。以上每一项对我来说都感觉不“自然”,已经证明是有问题的,或者看起来像是太辛苦了!
在 java 中,这是可行的,但基本上是通过构建工具/IDE 将所有类放在类路径上。也许问题是我期待 Python 的“魔力”?在 Flask webframework 测试中注意到,选项 d) 似乎是首选。
无论如何,下面推荐首选解决方案的陈述将消除我自己的“不自然”感觉。
我遇到了同样的问题并找到了一个answer https://stackoverflow.com/a/3073368/1448在一个相关的问题上为我工作。
只需删除项目根目录中的 __init__.py 即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)