2013-02-08 16 views
19

Sto eseguendo alcune operazioni di smontaggio con Python e alcuni controlli pre-test in setUpClass. Come posso buttare un unitest-fail all'interno del setUpClass, come il seguente esempio semplice:Come fallire un unipest python in setUpClass?

class MyTests(unittest.TestCase): 

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

    def test1(self): 
     pass 

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

dà l'errore TypeError: unbound method fail() must be called with TestCase instance as first argument (got str instance instead).

ho capito l'errore che ottengo come Fail è un metodo di istanza, e io non sono un esempio di MyClass ancora. Utilizzando un'istanza on-the-fly, come

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

anche non funziona, come unittest.TestCase sé non ha alcun test. Qualche idea su come fallire tutti i test in MyClass, quando alcune condizioni in setUpClass non sono soddisfatte?

domanda ollowup: Esiste un modo di vedere le prove in setUpClass?

risposta

22

self.fail("test") mettete nel vostro metodo di istanza installazione non riesce tutti i test

Penso che il modo più semplice per farlo a livello di classe è quello di fare una variabile di classe in modo da qualcosa come:

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

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

Spero che questo è quello che vuoi

+0

Sono in 'setUpClass', che non è un'istanza di' MyTest', in modo da 'self' non è definita a questo livello. anche "cls.fail()" non funziona. – Alex

+0

whoops non l'ha visto, risolto. – Raufio

22

Utilizzando un semplice asserzione dovrebbe funzionare

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

Sono in 'setUpClass' che è un classmethod, quindi non ho' self' ... – Alex

+0

La semplice 'assert' è davvero una buona idea ... – Alex

+0

fresco, accettare se è ciò che stavate cercando :) – Greg

Problemi correlati