2012-10-01 107 views
15

我的单元测试文件夹中组织这样。Python的单元测试发现与子

. 
|-- import 
| |-- import.kc 
| |-- import.kh 
| `-- import_test.py 
|-- module 
| |-- module.kc 
| |-- module.kh 
| `-- module_test.py 
`-- test.py 

我想简单地运行test.py使用单元测试Python模块运行我的每一个*_test.py的。 目前,我的test.py包含

#!/usr/bin/env python 

import unittest 

if __name__ == "__main__": 
    suite = unittest.TestLoader().discover('.', pattern = "*_test.py") 
    unittest.TextTestRunner(verbosity=2).run(suite) 

Python文档说,它应该自动发现我的测试中的子文件夹。但事实并非如此。

目前,它只输出

---------------------------------------------------------------------- 
Ran 0 tests in 0.000s 

OK 

我敢肯定,这是不符合我的*_test.py文件有问题,因为当我将它们移动到根目录下,它工作正常.. 上午什么我做错了?

回答

19

importmodule目录中添加__init__.py

+0

它的工作由刚刚接触到'__init __。py'文件,谢谢你。你能解释我为什么必须这样做吗?还有另一个解决方案吗?因为我正在和其他人一起工作,所以我希望测试是最简单的方法。 – tomahh

+2

这是测试发现实施方式的人为因素。实质上,每个包含测试的目录都必须作为Python模块导入。更多信息请见的[文档](http://docs.python.org/2/library/unittest.html#test-discovery)。 –

2

考虑使用nose代替香草unittest模块,如果你能切换。你不需要搞乱你自己的test.py文件或任何东西;运行nosetests将会找到并运行所有的测试。