[英]Python unittest and test discovery
正是我需要做的,使Python的什么unittest
工作? 我查看了官方文檔、SO 問題,甚至嘗試使用過nose
,但到目前為止沒有任何效果。 我做錯了什么?
bash:~/path/to/project/src/tests$ ls -l
total 8
-rw-r--r-- 1 myuser myuser 342 Out 11 11:51 echo_test.py
-rw-r--r-- 1 myuser myuser 71 Out 11 11:28 __init__.py
bash:~/path/to/project/src/tests$ python -m unittest -v echo_test
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
bash:~/path/to/project/src/tests$ python -m unittest discover
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
bash:~/path/to/project/src/tests$ cat echo_test.py
import unittest
class EchoTest(unittest.TestCase):
def fooTest(self):
self.assertTrue(1==1)
def barTest(self):
self.assertTrue(1==2)
#suite = unittest.TestLoader().loadTestsFromTestCase(TestEcho)
#unittest.TextTestRunner(verbosity=2).run(suite)
if __name__ == '__main__':
unittest.main()
如您所見,測試根本沒有運行,我不知道為什么(因為我不是 Python 程序員)。 僅供參考,我使用的是 python 2.7,而__init__.py
是一個空文件。 有什么想法嗎?
您需要將方法重命名為以“test”一詞開頭。
如http://docs.python.org/library/unittest.html 所示:
測試用例是通過子類化 unittest.TestCase 創建的。 這三個單獨的測試是用名稱以字母 test 開頭的方法定義的。 此命名約定通知測試運行器哪些方法代表測試。
我想提一下,你不能像運行一個可執行的 python 文件一樣運行 python 單元測試。 例如,這是我的問題:
python -m unittest ./TestMyPythonModule.py
... (stack trace) ...
ValueError: Empty module name
它失敗。
但是,這有效:
python -m unittest TestMyPythonModule
一開始很容易忽略。
unittest.main() 將運行所有以“test”開頭的函數。 所以你應該重命名你的函數
class EchoTest(unittest.TestCase):
def testfoo(self):
self.assertTrue(1==1)
def testbar(self):
self.assertTrue(1==2)
測試函數必須以名稱test
開頭,所以fooTest
應該是testFoo
。 請參閱此處的文檔
此外,也不需要__init__.py
文件,假設它們是您的tests
目錄中僅有的兩個文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.