运行单元测试发现时如何避免ModuleNotFoundError



unittest文件从其根目录导入模块,并直接运行该文件,没有任何问题;但是,当使用发现模式在其上层目录中运行测试时,会出现ModuleNotFoundError。

当然,最简单的解决方案是将该模块移动到运行测试的根目录,但因为我经常需要直接运行测试软件,所以这是不好的

创建副本是可能的,但它违反了DRY规则,并且容易出现各种命名冲突,这不是一个优雅的解决方案。

有其他办法解决这个问题吗?

├──TheTest_0     
│  ├──__init__.py
│  ├──meta_test.py
│  ├──mydict.py
├──runTest.ps1
python -m unittest discover --start-directory . --pattern "meta_test.py"

from mydict import Dict
ModuleNotFoundError: No module named 'mydict'

在测试文件的顶部添加这两行代码来解决问题。

import sys,os
sys.path.append(os.path.dirname(__file__))

谢谢@drum

最新更新