2013-07-15 101 views
4

我對Python比較陌生。根據unittest.setUp文檔:Python單元測試setUp函數

設置()
方法稱爲以製備測試夾具。 這在調用測試方法之前立即被調用;此方法引發的任何異常將被視爲錯誤而不是測試失敗。默認實現什麼都不做。

我的問題有關setUp如下:

在我們的測試代碼庫,我已經看到,我們從unittest.TestCase繼承定製的Python測試框架。原來,unittest.TestCase的名稱爲setUptearDown。在定製類中,我們有setUpTestCasetearDownTestCase。所以每次這兩個函數都會被調用,而不是那些原來的對應函數。

我的問題是:

  1. 如何是那些setUptearDown功能由底層測試跑步者叫什麼名字?
  2. 是否需要用於設置測試用例的函數應該以setUp開頭,用於拆除測試用例的函數應該以tearDown開頭?或者它可以被命名爲任何有效的標識符?

謝謝。

回答

7
  1. setUp()和tearDown()方法在類繼承自unittest.TestCase時可以自動使用。
  2. 它們應該被命名爲setUp()和tearDown(),只有在執行測試方法時纔會使用它們。

例子:

class MyTestCase(unittest.TestCase): 
    def setUp(self): 
    self.setUpMyStuff() 

    def tearDown(self): 
    self.tearDownMyStuff() 

class TestSpam(MyTestCase): 
    def setUpMyStuff(self): 
    # called before execution of every method named test_... 
    self.cnx = # ... connect to database 

    def tearDownMyStuff(self): 
    # called after execution of every method named test_... 
    self.cnx.close() 

    def test_get_data(self): 
    cur = self.cnx.cursor() 
    ... 
+0

感謝您的答覆。你的意思是說,當我的函數名以setUp和tearDown開頭時,它們會自動使用嗎?他們的名字不需要完全包含'setUp'和'tearDown',他們可以是'setUpThisCase',這是正確的嗎? – taocp

+0

正在執行名爲'test_ *'的方法(例如'test_ham'或'test_spam')之前和之後自動調用setUp()和tearDown()。我不明白其他問題。 – geertjanvdk

+0

謝謝。我明白這一點。我的問題是:如果可能的話,我可以將'setUp'的名稱更改爲'setUpTest'等其他名稱,在這種情況下,是否會自動使用'setUpTest'? – taocp