我使用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。测试这些系统?


当前回答

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

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

其他回答

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

PYTHONPATH=. py.test

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

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

我也遇到过类似的问题。pytest无法识别安装在我工作的环境中的模块。

我通过在相同的环境中安装pytest来解决这个问题。

我通过删除源文件父文件夹中的顶层__init__.py来解决这个问题。

在跟随Flask教程时,我也遇到了同样的问题,我在官方的Pytest文档中找到了答案。 这与我(以及其他许多人)过去做事的方式有一点不同。

你必须在你的项目根目录下创建一个setup.py文件,至少包含以下两行代码:

from setuptools import setup, find_packages
setup(name="PACKAGENAME", packages=find_packages())

其中PACKAGENAME是应用程序的名称。然后你要用pip安装它:

pip install -e .

-e标志告诉pip以可编辑或“开发”模式安装包。因此,下次运行pytest时,它应该在标准PYTHONPATH中找到你的应用程序。

我在弗拉斯克也遇到了同样的问题。

当我补充说:

__init__.py

到测试文件夹,问题消失了:)

可能应用程序无法将文件夹测试识别为模块。