我遵循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/

10-12 22:39