Python单元测试找不到模块[重复]

Posted

技术标签:

【中文标题】Python单元测试找不到模块[重复]【英文标题】:Python unit test cannot find module [duplicate] 【发布时间】:2020-10-04 13:22:24 【问题描述】:

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

project -
        | _ Library _
        |            |_ TimeCalculator.py
        | _ Test _
                  |_ UnittestFile.py

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

from .Library.TimeCalculator import TimeCalculator

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

【问题讨论】:

【参考方案1】:

如python - Running unittest with typical test directory structure - Stack Overflow 中所述,您应该在LibraryTest 这两个文件夹中创建一个__init__.py 文件。

针对您的具体结构:

project
├── Library
│   ├── __init__.py         # make it a package
│   └── TimeCalculator.py
└── test
    ├── __init__.py         # also make test a package
    └── UnittestFile.py

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

from Library.TimeCalculator import TimeCalculator

PD:不确定是否是重复问题,因为答案与python - Running unittest with typical test directory structure - Stack Overflow 几乎相同,但明显不同,因为必须删除第一个.

【讨论】:

我认为这是一个很好的重复目标。 . 似乎是一个错字。

以上是关于Python单元测试找不到模块[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Intellij Android + Maven 找不到单元测试

使用 typescript/mocha 进行单元测试时找不到模块

将 Swiper 6 升级到 7 后,在单元测试(开玩笑)上找不到模块“swiper_angular”

错误:找不到满足单元测试要求的版本(来自版本:无)错误:未找到单元测试的匹配分布

货物测试无法引用集成测试中定位板条箱内的任何公共内容。单元测试也找不到测试用例

单元测试找不到要测试的类