运行Python unittest测试套件遇ModuleNotFoundError问题求助
解决ModuleNotFoundError: No module named 'tests'的问题
方案一:调整导入语句
修改tests/unit_test_suite.py中的导入代码,去掉tests.前缀——因为用-m模式运行时,tests已经作为顶层模块被识别,内部模块引用不需要重复指定:
import sys import unittest from mod1.test1 import TestClass1 from mod1.test2 import TestClass2 if __name__ == "__main__": suite = unittest.TestSuite() tests = [TestClass1, TestClass2] for test in tests: suite.addTest(unittest.makeSuite(test)) result = unittest.TextTestRunner().run(suite) sys.exit(not result.wasSuccessful())
完成修改后,在tests文件夹的父目录下执行原命令:
python3 -m tests.unit_test_suite
方案二:临时添加目录到模块搜索路径
如果不想修改代码,可以在执行命令前,把当前工作目录(tests的父目录)加入Python的模块搜索路径:
Linux/macOS
export PYTHONPATH=".:$PYTHONPATH" python3 -m tests.unit_test_suite
Windows(PowerShell)
$env:PYTHONPATH = ".;" + $env:PYTHONPATH python3 -m tests.unit_test_suite
方案三:直接运行脚本(不使用-m模式)
在tests的父目录下,直接执行脚本文件:
python3 tests/unit_test_suite.py
这种方式下,原代码中的from tests.mod1.test1 import...导入语句可正常工作,因为Python会自动将脚本所在的父目录加入模块搜索路径。
内容的提问来源于stack exchange,提问作者uneq95
相关产品推荐
相关产品推荐

