2014-05-15 7 views
36

Qual è la differenza tra setUp() e setUpClass() nel framework Python unittest? Perché l'installazione dovrebbe essere gestita in un metodo rispetto all'altro?Qual è la differenza tra setUp() e setUpClass() in Python unittest?

voglio capire quale parte di setup è stato fatto nelle setUp() e setUpClass() funzioni, così come con tearDown() e tearDownClass().

risposta

61

La differenza si manifesta quando si dispone di più di un metodo di test nella classe. setUpClass e tearDownClass vengono eseguiti una volta per l'intera classe; setUp e tearDown vengono eseguiti prima e dopo ogni metodo di prova.

Ad esempio:

class Example(unittest.TestCase): 
    @classmethod 
    def setUpClass(cls): 
     print("setUpClass") 

    def setUp(self): 
     print("setUp") 

    def test1(self): 
     print("test1") 

    def test2(self): 
     print("test2") 

    def tearDown(self): 
     print("tearDown") 

    @classmethod 
    def tearDownClass(cls): 
     print("tearDownClass") 

Quando si esegue questo test, stampa:

setUpClass 
setUp 
test1 
tearDown 
.setUp 
test2 
tearDown 
.tearDownClass 

(. I punti (.) sono unittest s' uscita di default quando un test viene superato) Si osservi che setUp e tearDown vengono visualizzati prima e dopo test1etest2, mentre setUpClass e tearDownClass vengono visualizzati solo una volta, all'inizio e alla fine dell'intero caso di test.

+0

Non dovrebbe essere l'ordine? : setUpClass setUp test1 tearDown .setup test2 .tearDown tearDownClass –

+0

@JaiSharma Questo è quello che ho già? –

+0

Avviso "." di fronte a TearDown e all'assenza di "." di fronte a tearDownClass –

Problemi correlati