2015-06-01 27 views
1

Unittest.TestCase中的setUp方法是否知道下一個將要執行的測試用例是什麼?例如:從unittest.TestCase的setUp方法知道當前的測試用例嗎?

import unittest 

class Tests(unittest.TestCase): 
    def setUp(self): 
     print "The next test will be: " + self.next_test_name() 

    def test_01(self): 
     pass 

    def test_02(self): 
     pass 

if __name__ == '__main__': 
    unittest.main() 

這樣的代碼應該產生在執行時:

The next test will be: test_01 
The next test will be: test_02 
+0

你試試?它工作嗎? –

+0

「has no attribute next_test_name」 – Melon

+1

爲什麼你需要知道這一點? – Vader

回答

1
class Tests(unittest.TestCase): 
    def setUp(self): 
     print "The next test will be: " + self.id() 

    def test_01(self): 
     pass 

    def test_02(self): 
     pass 

if __name__ == '__main__': 
    unittest.main() 

將產生:

The next test will be: __main__.Tests.test_01 
The next test will be: __main__.Tests.test_02 
4

不,unittest不作任何測試執行的順序保證。

此外,你應該建立你的單元測試不依賴於任何特定的順序。如果他們需要從另一種測試方法進行一些狀態設置,則根據定義,您不再具有單元測試。

當前測試方法將在self._testMethodName執行的生命,但需要您自擔風險使用它的名字(訪問_private屬性如有破損沒有警告)。不要用這個來根據特定的測試方法來定製setUp,而傾向於將需要不同設置的測試拆分成單獨的測試類。

+0

我不想知道特定的順序。我只想知道將要執行的下一個測試用例是什麼 – Melon

+0

您可能可以通過一個'nose'插件來獲取它。但爲什麼你想知道它?這聽起來像是一個XY問題。 – wim

+0

對特定測試用例有difiirent setUp – Melon

相關問題