pytest 'ImportError: No module named YadaYadaYada' 的路径问题

新手上路,请多包涵

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

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

运行 py.test 在 repo 目录中,一切都如您所愿

但是当我在 linux 或 windows 上尝试同样的事情时(它们都有 pytest 2.2.3),只要它第一次从我的应用程序路径导入某些东西,它就会吠叫。比如说 from app import some_def_in_app

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

原文由 MattoTodd 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 241
2 个回答

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

你有2个选择:

  1. 手动将路径添加到测试文件,如下所示:
    import sys, os
   myPath = os.path.dirname(os.path.abspath(__file__))
   sys.path.insert(0, myPath + '/../')

  1. 使用 PYTHONPATH=../ 运行测试。

原文由 Not_a_Golfer 发布,翻译遵循 CC BY-SA 4.0 许可协议

我不确定为什么 py.test 不在 PYTHONPATH 本身中添加当前目录,但这里有一个解决方法(从存储库的根目录执行):

 python -m pytest tests/

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

原文由 Apteryx 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏