一尘不染

Python-pytest的PATH问题“ ImportError:没有名为YadaYadaYada的模块”

python

我使用easy_install在Mac上安装pytest,并开始为文件结构像这样的项目编写测试:

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

py.testrepo目录中运行时,所有行为均符合你的预期

但是,当我在linuxWindows上尝试相同的操作时(两者上都具有pytest 2.2.3),只要它从我的应用程序路径中首次导入某些内容,它就会发出吠声。举例来说from app import some_def_in_app

我需要编辑PATH才能在这些系统上运行py.test吗?有人经历过吗?


阅读 835

收藏
2020-02-20

共2个答案

一尘不染

是的,如果你cd转到tests目录,则源文件夹不在Python的路径中。

你有2个选择:

  1. 手动将路径添加到测试文件,如下所示:
import sys, os
myPath = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, myPath + '/../')
  1. 使用env var运行测试PYTHONPATH=../。
2020-02-20
一尘不染

我不确定为什么py.test不会在PYTHONPATH本身中添加当前目录,但是这是一种变通方法(从存储库的根目录执行):

python -m pytest tests/

之所以有效,是因为Python为你添加了当前目录到PYTHONPATH中。

2020-02-20