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

发布于 2021-02-02 23:14:17

我使用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吗?有人经历过吗?

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    是的,如果你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=../。


  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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

    python -m pytest tests/
    

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看