我使用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

其他回答

此外,如果在虚拟环境中运行pytest,请确保在虚拟环境中安装了pytest模块。激活虚拟环境并运行pip install pytest。

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

export PYTHONPATH=$PYTHONPATH:.

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

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

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

由于无法导入模块,测试经常会中断。

经过研究,我发现系统在错误的地方查看文件,我们可以通过在相同的文件夹中复制包含模块的文件来轻松克服这个问题,以便正确导入。

另一个解决方案建议是更改导入的声明,并向MutPy显示单元的正确路径。然而,由于多个单元可能具有这种依赖关系,这意味着我们也需要在它们的声明中提交更改,因此我们更喜欢简单地将单元移动到文件夹中。

是,如果您cd到测试目录,则源文件夹不在Python的路径中。

你有两个选择:

手动将路径添加到测试文件中。就像这样: 导入sys, OS myPath = os.path.dirname(os.path.abspath(__file__)) sys.path。insert(0, myPath + '/../') 使用env var PYTHONPATH=../运行测试。