我使用easy_install在Mac上安装pytest,并开始为一个具有如下文件结构的项目编写测试:

repo/
   |--app.py
   |--settings.py
   |--models.py
   |--tests/
          |--test_app.py

py运行。在repo目录中进行测试,一切都如您所料。

但是当我在Linux或Windows上尝试同样的事情时(两者都有pytest 2.2.3),每当它第一次从我的应用程序路径导入某些东西时,它就会发出吠叫。例如,from app import some_def_in_app。

我需要编辑我的PATH来运行py。测试这些系统?


当前回答

我开始得到奇怪的ConftestImportFailure: ImportError('没有模块命名…错误时,我不小心添加__init__.py文件到我的src目录(这不是一个Python包,只是一个容器的所有源代码)。

其他回答

我得到这个错误由于一些更简单的(你甚至可以说微不足道)。我还没有安装pytest模块。所以一个简单的安装python-pytest为我解决了这个问题。

'pytest'将在setup.py中作为测试依赖项列出。确保您也安装了测试需求。

如果这个pytest错误不是出现在您自己的包上,而是出现在包的requirements.txt中的git安装包上,解决方案是切换到可编辑的安装模式。

例如,假设你的包的requirements.txt有如下一行:

git+https://github.com/foo/bar.git

您可以将其替换为以下内容:

-e git+https://github.com/foo/bar.git#egg=bar

您可以在项目根中使用PYTHONPATH运行

PYTHONPATH=. py.test

或者使用pip install作为可编辑导入

pip install -e .   # install package using setup.py in editable mode

有点遗憾的是,这是Python中的一个问题……但在我看来,加入这个环境变量是最舒服的方式:

export PYTHONPATH=$PYTHONPATH:.

你可以把这一行放在你的。zshrc或。bashrc文件中。

我们通过添加以下环境变量修复了这个问题。

PYTHONPATH=${PYTHONPATH}:${PWD}/src:${PWD}/test