【问题标题】:python unittest relative importpython unittest相对导入
【发布时间】:2020-05-22 21:48:39
【问题描述】:

这个问题与Relative imports with unittest in Python有关,但我想特别问一下unittest如何处理/修改导入的重要性。

假设我有一个包结构:

containing_folder/
    project/
        main_program.py
        random_module_a/
            a.py
            a_test.py

a_test.py 包含 a.py 的相对导入,例如:

import a

要运行我的单元测试,我会转到外部文件夹并运行 unittest:

cd project
python -m unittest random_module_a/a_test.py

这不起作用,我收到错误:

ModuleNotFoundError: No module named 'a' 

但是,如果我按如下方式修改导入,则测试运行良好:

# in `test_a.py`
from random_module_a import a

为什么相对导入(第一个版本)不适用于 unittest?我很困惑,因为如果我想将a_test 作为脚本运行,那么它可以在没有from random_module_a 位的情况下导入a

【问题讨论】:

    标签: python import python-import python-unittest


    【解决方案1】:

    要从当前目录导入a.py,请使用:

    from . import a
    

    请注意,您必须在包中执行此操作。

    【讨论】:

      猜你喜欢
      • 2014-02-24
      • 1970-01-01
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 2013-09-16
      • 2013-11-10
      相关资源
      最近更新 更多