我遵循python unittest进行一些测试,并使用discover函数将测试打包到一个套件中。
但是,当我尝试使用UnitTest运行测试时,我得到以下错误:
Traceback (most recent call last):
File "D:/Project/run_tests.py", line 12, in <module>
suite2 = unittest.defaultTestLoader.discover(dir2, pattern='test*.py')
File "C:\Python\Python36-32\lib\unittest\loader.py", line 338, in discover
raise ImportError('Start directory is not importable: %r' % start_dir)
ImportError: Start directory is not importable: 'D:\\Project\\dir2'
这就是run_tests.py的样子:
import unittest
if __name__ == "__main__":
dir1 = "./test1"
suite1 = unittest.defaultTestLoader.discover(dir1, pattern='test*.py')
runner1 = unittest.TextTestRunner()
runner1.run(suite1)
dir2 = "./tes2"
suite2 = unittest.defaultTestLoader.discover(dir2, pattern='test*.py')
runner2 = unittest.TextTestRunner()
runner2.run(suite2)
最佳答案
有一个非常相似的错误,但没有涉及符号链接。
这是我的目录布局。
- project root
- foo
- bar
- test
foo和bar被视为顶级包,其中测试是所有测试用例的活动状态。
在Intellij中运行UnitTest时,我使用了以下参数:
目标:脚本路径设置为
test
文件夹工作方向是项目的根。
这个设置给了我一个
Start directory is not importable
错误。我跟踪了unittest.loader.py中的源代码,并意识到它检查了
__init__.py
的测试文件夹。所以解决方案是在我的文件夹中添加一个__init__.py
。希望这能帮助别人。--编辑--
我在python 3.6上,Mac OSX
关于python - python - unittest - ImportError:起始目录不可导入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45631667/