Python unittest 无法导入其他模块
Python unittest unable to import other modules
项目级别:
├─project_root
├───application
│ └─── target.py
│ └─── utils.py
├───tests
├ └─── test_*.py
当我从 project_root
目录在 CLI 上 运行 py -m unittest discover
时,它会发现所有测试。但是,测试无法 运行,因为它们找不到 utils.py(target.py 依赖于此)。
有人知道如何解决这个问题吗?
这是一个范围问题,您需要使用相对导入,因为 test_*.py 位于其范围内不包含 utils.py 的文件夹中。
所以,有两个选择,将 utils.py 复制到目录中或使用相对导入来查找和导入库。
当我能找到一个相对导入的例子时,我会更新答案——我已经有一段时间没用过它们了。
编辑 - 找到一个。
还没有测试过,但是这种性质的相对导入的通用格式(使用上面显示的范围是:)
from .application import utils
“application”前面的点:“.application”告诉 python 解释器返回一个目录,找到名为“application”的模块(另一个文件夹),然后导入那里的文件。
项目级别:
├─project_root
├───application
│ └─── target.py
│ └─── utils.py
├───tests
├ └─── test_*.py
当我从 project_root
目录在 CLI 上 运行 py -m unittest discover
时,它会发现所有测试。但是,测试无法 运行,因为它们找不到 utils.py(target.py 依赖于此)。
有人知道如何解决这个问题吗?
这是一个范围问题,您需要使用相对导入,因为 test_*.py 位于其范围内不包含 utils.py 的文件夹中。
所以,有两个选择,将 utils.py 复制到目录中或使用相对导入来查找和导入库。
当我能找到一个相对导入的例子时,我会更新答案——我已经有一段时间没用过它们了。
编辑 - 找到一个。 还没有测试过,但是这种性质的相对导入的通用格式(使用上面显示的范围是:)
from .application import utils
“application”前面的点:“.application”告诉 python 解释器返回一个目录,找到名为“application”的模块(另一个文件夹),然后导入那里的文件。