【问题标题】:Getting Module Import error with unit testing in python在 python 中使用单元测试获取模块导入错误
【发布时间】:2019-06-21 02:45:40
【问题描述】:

你好 Python 程序员

我在单元测试期间遇到了一个奇怪的模块导入错误。无法找到根本原因。 这是我的目录结构的样子

Main_folder
   |
   |
   Module_x
       |  ABC.py
   |
   |
   Module_y
        | DEF.py
   |
   |
   test
       | unit_tests
             | test_ABC.py  

在 test_ABC.py 我正在导入以下内容

from Module_x import ABC

我收到错误为“没有模块名称 Module_x”

我在每个文件夹中都创建了__init__.py 文件

如果我使用 DEF.py 中的同一行,我不会收到任何错误

如果您知道我为什么会遇到此问题,请提供帮助?

我正在使用 Python 3.5 Anaconda 发行版

谢谢

【问题讨论】:

  • 工作目录是什么? print(os.getcwd())
  • cwd 是 main_folder
  • 尝试从Main_folder 运行测试,例如python test/unit_tests/test_ABC.py
  • @JRajan 尝试过.. 但结果相同
  • 然后需要在Python路径中添加工作目录,让Python知道还有其他模块需要加载。您可以使用链接的答案作为动态添加目录的指针stackoverflow.com/a/8663119/690576 或使用以下答案将其添加到全局 python 路径。

标签: python python-2.7 unit-testing python-unittest


【解决方案1】:

这不是一个奇怪的问题,而是一个常见的问题。

您可以将您的根添加到PYTHONPATH 以解决此问题:PYTHONPATH=/path/to/project_root python test_ABC.py 或其他类似的东西。

【讨论】:

  • 嗨 Sraw,我说这很奇怪,因为我可以从 DEF.py 访问相同的内容而不会遇到任何与路径相关的问题?有什么想法吗?
  • 问题是你如何运行DEF.py,我相信你在Main_folder下运行它,而不是在Main_folder下运行测试用例。在您的情况下,您应该不可能将Main_folder 作为os.getcwd() 获得。或者你应该能够找到那个模块。
  • 是的,你是对的......从 main_folder 中的文件调用的 DEF.py。如果我的测试是从放在 main_folder 中的文件调用的,那么它可以工作
猜你喜欢
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多