我正在跟踪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)
我在CI管道上也遇到过类似的问题。在我的例子中,有一个级别的间接文件夹/topleveldirectory/tests
所以我在unittest命令中添加了-s:
python -m unittest discover -s folder/topleveldirectory/tests
有一个similar question with a helpful answer here。
但是,如果在Linux中使用类似于PyCharm的IDE并在soft-linked目录中打开文件,则可能会发生这种情况。运行测试的编辑器似乎对同一个模块的两条路径感到困惑,并说其中一条不存在。把它放在一个位置,没有任何软链接为我修复了这个。
有一个非常相似的错误,但没有涉及符号链接。
这是我的目录布局。
foo和bar被认为是顶级包,其中test是所有的测试用例。
在intellij中运行unittest时,我使用了以下参数:
test
文件夹的脚本路径这个设置给了我一个
Start directory is not importable
错误。我跟踪了unittest.loader.py中的源代码,发现它检查测试文件夹中的
__init__.py
。所以解决方法是在我的test
文件夹中添加一个__init__.py
。希望这能帮助别人。--编辑--
我在Python3.6,MacOSX上
相关问题 更多 >
编程相关推荐