2012-10-01 105 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將會找到並運行所有的測試。