2011-08-05 40 views
18

好吧,因爲Google搜索一段時間沒有幫助我(即使使用正確的關鍵字)。Python TestCase中的非測試方法

我有一個從TestCase擴展的類,我想在其中有一些輔助方法不會作爲測試的一部分執行,它們將被用來生成一些模擬對象等,任何測試。

我知道我可以使用@skip裝飾器,所以unittest不會運行特定的測試方法,但我認爲這是一個醜陋的黑客用於我的目的,任何提示?

在此先感謝,社區:D

+4

不是隻測試以「test_」開頭的方法的運行測試嗎? – daveydave400

回答

32

我相信你不必做任何事情。你的幫手方法不應該從test_開始。

+1

@piva:閱讀http://docs.python.org/library/unittest.html上的unittest文檔,特別是 「TestLoader使用'test'方法名稱前綴自動標識測試方法。」 – daveydave400

+0

@ daveydave400 Yeap,我的愚蠢問題,但匆忙我的眼睛衝過文本 – victorcampos

+0

/拋開偶爾,我忘記用'test_'前綴一個測試方法,並且花了我一段時間才弄清楚爲什麼它不是由測試運行者運行。 –

1

測試運行器只會直接執行從test開始的方法,所以請確保您的幫助器方法的名稱不以test開頭。

2

單元測試執行[1]的唯一方法是setUp,任何以testtearDown [2]開始的順序。除了這三件事之外,你可以製作幫助器方法並調用它們,它們不會被unittest執行。

您可以將setUp視爲__init__:如果您生成多個測試使用的模擬對象,請在setUp中創建它們。

def setUp(self): 
    self.mock_obj = MockObj() 

[1]:這是不完全正確,但這些是主要的3個基團的,可以集中寫測試時上的方法。

[2]:由於遺留原因,unittest將同時執行test_footestFoo,但test_foo是當前的首選樣式。 setUptearDown應該像這樣出現。

相關問題