Python-pytest的PATH问题“ ImportError:没有名为YadaYadaYada的模块”
我使用easy_install
在Mac上安装pytest,并开始为文件结构像这样的项目编写测试:
repo/
repo/app.py
repo/settings.py
repo/models.py
repo/tests/
repo/tests/test_app.py
py.test
在repo
目录中运行时,所有行为均符合你的预期
但是,当我在linux
或Windows
上尝试相同的操作时(两者上都具有pytest 2.2.3),只要它从我的应用程序路径中首次导入某些内容,它就会发出吠声。举例来说from app import some_def_in_app
我需要编辑PATH才能在这些系统上运行py.test吗?有人经历过吗?
-
是的,如果你
cd
转到tests目录,则源文件夹不在Python的路径中。你有2个选择:
- 手动将路径添加到测试文件,如下所示:
import sys, os myPath = os.path.dirname(os.path.abspath(__file__)) sys.path.insert(0, myPath + '/../')
- 使用env var运行测试PYTHONPATH=../。
-
我不确定为什么py.test不会在PYTHONPATH本身中添加当前目录,但是这是一种变通方法(从存储库的根目录执行):
python -m pytest tests/
之所以有效,是因为Python为你添加了当前目录到PYTHONPATH中。