Python单元测试找不到模块

Ene*_*Boy 5 python-3.x python-unittest

我有一个关于如何在 python 单元测试模块中正确导入模块的问题。这是我的目录结构

project -
        | _ Library _
        |            |_ TimeCalculator.py
        | _ Test _
                  |_ UnittestFile.py
Run Code Online (Sandbox Code Playgroud)

我想测试 TimeCalculator.py 中的函数,所以在 UnittestFile.py 中我写

from .Library.TimeCalculator import TimeCalculator
Run Code Online (Sandbox Code Playgroud)

但出现错误,提示ImportError:尝试在没有已知父包的情况下进行相对导入
我想问在这种情况下如何在不设置 PATH 的情况下导入。

use*_*205 5

python - Running unittest with generic test directory Structure - Stack Overflow__init__.py中所述,您应该在两个文件夹中创建一个文件,Library并且Test.

\n

对于您的具体结构:

\n
project\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Library\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py         # make it a package\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 TimeCalculator.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py         # also make test a package\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 UnittestFile.py\n
Run Code Online (Sandbox Code Playgroud)\n

.然后,您应该从导入句子中删除第一个:

\n
from Library.TimeCalculator import TimeCalculator\n
Run Code Online (Sandbox Code Playgroud)\n

PD:不确定是否是一个重复的问题,因为答案几乎与 python 相同- 使用典型的测试目录结构运行单元测试 - Stack Overflow但明显不同,因为他必须删除第一个.

\n