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