好吧,因爲Google搜索一段時間沒有幫助我(即使使用正確的關鍵字)。Python TestCase中的非測試方法
我有一個從TestCase擴展的類,我想在其中有一些輔助方法不會作爲測試的一部分執行,它們將被用來生成一些模擬對象等,任何測試。
我知道我可以使用@skip裝飾器,所以unittest不會運行特定的測試方法,但我認爲這是一個醜陋的黑客用於我的目的,任何提示?
在此先感謝,社區:D
好吧,因爲Google搜索一段時間沒有幫助我(即使使用正確的關鍵字)。Python TestCase中的非測試方法
我有一個從TestCase擴展的類,我想在其中有一些輔助方法不會作爲測試的一部分執行,它們將被用來生成一些模擬對象等,任何測試。
我知道我可以使用@skip裝飾器,所以unittest不會運行特定的測試方法,但我認爲這是一個醜陋的黑客用於我的目的,任何提示?
在此先感謝,社區:D
我相信你不必做任何事情。你的幫手方法不應該從test_
開始。
@piva:閱讀http://docs.python.org/library/unittest.html上的unittest文檔,特別是 「TestLoader使用'test'方法名稱前綴自動標識測試方法。」 – daveydave400
@ daveydave400 Yeap,我的愚蠢問題,但匆忙我的眼睛衝過文本 – victorcampos
/拋開偶爾,我忘記用'test_'前綴一個測試方法,並且花了我一段時間才弄清楚爲什麼它不是由測試運行者運行。 –
測試運行器只會直接執行從test
開始的方法,所以請確保您的幫助器方法的名稱不以test
開頭。
單元測試執行[1]的唯一方法是setUp
,任何以test
和tearDown
[2]開始的順序。除了這三件事之外,你可以製作幫助器方法並調用它們,它們不會被unittest執行。
您可以將setUp
視爲__init__
:如果您生成多個測試使用的模擬對象,請在setUp
中創建它們。
def setUp(self):
self.mock_obj = MockObj()
[1]:這是不完全正確,但這些是主要的3個基團的,可以集中寫測試時上的方法。
[2]:由於遺留原因,unittest將同時執行test_foo
和testFoo
,但test_foo
是當前的首選樣式。 setUp
和tearDown
應該像這樣出現。
不是隻測試以「test_」開頭的方法的運行測試嗎? – daveydave400