2013-02-08 59 views
19

我做在setUpClass一些單元測試使用Python和一些預試驗檢查。我如何可以拋出一個unitest - 在setUpClassfail,如下面的簡單的例子:如何在setUpClass中失敗python unittest?

class MyTests(unittest.TestCase): 

    @classmethod 
    def setUpClass(cls):  
     unittest.TestCase.fail("Test") 

    def test1(self): 
     pass 

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

提供了錯誤TypeError: unbound method fail() must be called with TestCase instance as first argument (got str instance instead)

我明白了,我得到的失敗的錯誤是一個實例方法,而我沒有的MyClass一個實例呢。使用實例上最飛象

unittest.TestCase().fail("Test") 

也不起作用,因爲unittest.TestCase本身沒有測試。任何想法如何在MyClass中通過setUpClass中的某些條件未得到滿足時通過所有測試?

的後續問題:有沒有辦法看到setUpClass測試?

回答

22

self.fail("test")投產您的安裝實例方法失敗,所有的測試

我想在類級別做到這一點,最簡單的方法就是讓一個類變量所以像:

@classmethod 
def setUpClass(cls): 
    cls.flag = False 

def setUp(self): 
    if self.flag: 
     self.fail("conditions not met") 

希望這是你想要的。

+0

我在'setUpClass',這不是'MyTest',所以'self'沒有在這個級別上定義的一個實例。 'cls.fail()'也不起作用。 – Alex

+0

哎呦沒有看到,修復。 – Raufio

22

使用簡單的斷言應該工作

assert False, "I mean for this to fail" 
+0

我在'setUpClass'這是一個類方法,所以我沒有'self' ... – Alex

+0

簡單'assert'是一個很好的主意... – Alex

+0

冷靜,如果接受這就是你要找的:) – Greg

相關問題