2013-12-16 8 views
5

Durante il test di una delle nostre app Web per chiarezza, ho creato un BaseTestClass che eredita unittest.TestCase. Il BaseTestClass include i miei metodi setUp() e tearDown(), che ereditano ciascuna delle mie classi <Page>Test.Python unittest, salta i test quando si utilizza una classe di test di base

A causa di diversi dispositivi sottoposti a test con pagine simili con alcune differenze, volevo utilizzare il decoratore @unittest.skipIf() ma è difficile. Invece di "ereditare" il decoratore da BaseTestClass, se provo a usare quel decoratore Eclipse tenta di importare automaticamente unittest.TestCase in <Page>Test, che non mi sembra giusto.

C'è un modo per utilizzare i decoratori skip quando si utilizza un Base?

class BaseTestClass(unittest.TestCase): 

    def setUp(): 
     #do setup stuff 
     device = "Type that blocks" 

    def tearDown(): 
     #clean up 

Una delle classi di test in un modulo separato:

class ConfigPageTest(BaseTestClass): 

    def test_one(self): 
     #do test 

    def test_two(self): 
     #do test 

    @unittest.skipIf(condition, reason) <<<What I want to include 
    def test_three(self): 
     #do test IF not of the device type that blocks 

risposta

2

Ovviamente questo richiede unittest2 (o Python 3, suppongo), ma a parte questo, il vostro esempio era abbastanza vicino. Assicurati che il nome del tuo vero codice di prova venga scoperto dal meccanismo di rilevamento dei test dell'unità (test_*.py per il naso).

#base.py 
import sys 
import unittest2 as unittest 

class BaseTestClass(unittest.TestCase): 

    def setUp(self): 
     device = "Type that blocks" 
    def tearDown(self): 
     pass 

E nel codice vero e proprio:

# test_configpage.py 
from base import * 

class ConfigPageTest(BaseTestClass): 

    def test_one(self): 
     pass 

    def test_two(self): 
     pass 

    @unittest.skipIf(True, 'msg') 
    def test_three(self): 
     pass 

che dà l'uscita

.S. 
---------------------------------------------------------------------- 
Ran 3 tests in 0.016s 

OK (SKIP=1) 
+0

Grazie, non avrei mai pensato di utilizzare l'importazione wild-card. –