Lors de l'écriture d'un test à l'aide du module unittest, vous pouvez écrire un fixture pour préparer le test. Bien que tearDown reçoive et gère les exceptions dans la fonction de test. Les exceptions pendant la configuration seront contournées. Utilisez doCleanups pour les setUps qui peuvent échouer.
Lors de l'écriture d'un test à l'aide du module unittest, vous pouvez écrire un fixture pour préparer le test. Par exemple, setUp / tearDown correspond à cela.
Écrivez comme suit.
class Tests(unittest.TestCase):
def setUp(self):
print("setUp")
def tearDown(self):
print("tearDown")
def test_it(self):
print("before execute")
_callFUT()
print("after execute")
A ce moment, il est exécuté dans l'ordre suivant.
tearDown est également appelé lorsqu'une exception se produit dans la fonction de test en 2.
class Tests2(unittest.TestCase):
def setUp(self):
print("setUp")
def tearDown(self):
print("tearDown")
def doCleanups(self):
print("cleanup")
def test_it(self):
print("before execute")
raise Exception
print("after execute")
L'ordre d'exécution est le même.
Bien sûr, le code écrit dans setUp de test est également du code python, il y en a donc qui peuvent déclencher des exceptions. Dans un tel cas, il est dangereux de penser que tearDown garantit le nettoyage après exécution. En fait, tearDown n'est pas au courant des exceptions dans setUp.
class Tests3(unittest.TestCase):
def setUp(self):
print("setUp")
raise Exception("setup")
def tearDown(self):
print("tearDown")
def test_it(self):
print("before execute")
raise Exception("execute")
print("after execute")
Seuls les suivants sont appelés
tearDown n'est pas appelé. À ce stade, si vous souhaitez ajouter du post-traitement, utilisez doCleanups. doCleanups est appelé inconditionnellement indépendamment des exceptions à setUp et tearDown.
class Tests4(unittest.TestCase):
def setUp(self):
print("setUp")
raise Exception("setup")
def tearDown(self):
print("tearDown")
def doCleanups(self):
print("cleanup")
def test_it(self):
print("before execute")
print("after execute")
L'ordre d'exécution dans ce cas est
Sera.
Recommended Posts