Que se passe-t-il lorsque les installations les plus difficiles échouent

By | août 9, 2019

python pour débutant

Dans la syntaxe de montage unittest et la référence de flux, je n’ai présenté que des méthodes et des fonctions de montage qui ne contenaient aucune exception.
Cependant, dans le code de production réel, il est tout à fait possible que quelque chose se passe mal lors de la configuration des montages de test.

Cet article est simplement une démonstration de ce qu’il advient du flux de votre code de test quand une exception est levée dans une fonction fixture.

Et, pendant que j'y suis, je peux aussi bien faire la démonstration du flux de contrôle normal lorsqu'un test échoue, affirme ou lève une exception.

Pour réduire la taille du code de démonstration, je vais réutiliser le code du message précédent, puis dériver mes classes de test de classe TestFixtures (également à partir de ce post), et ne surchargez qu'une méthode à la fois pour indiquer un échec.

Si vous voulez suivre, vous voudrez mettre ceci en haut de votre fichier:

J'utilise DemoException pour représenter un échec dans un appareil. Cependant, une assertion sera traitée de la même manière.

Voyons ce qui suit:

Concept général

L'idée générale est que si un type setUp de méthode / fonction échoue, les tests inclus ne sont PAS exécutés et le tearDown correspondant n'est PAS exécuté.
Si un type de méthode / fonction tearDown échoue, la seule différence est que l'erreur est constatée et que le test échoue.

exception dans setUp ()

Le module et les fixtures au niveau de la classe sont appelés, comme ils le feraient dans de bons cas.
Nous voyons setUp être appelé pour les deux tests.
Étant donné que la configuration échoue, aucun des tests n'est exécuté.
Et la méthode tearDown n'est pas exécutée pour l'un ou l'autre test.

Sortie

exception dans tearDown ()

Le flux semble identique à un scénario de test réussi, mais l'exception tearDown entraîne l'échec des deux tests.

Sortie

exception dans setUpClass ()

Les modules sont exécutés normalement, mais rien d’autre.

Sortie

exception dans tearDownClass ()

Flux de test complet comme dans de bons tests normaux, mais l'erreur est notée et le test échoue.

Sortie

exception dans setUpModule ()

Pour démontrer un échec dans les fonctions du module, j’ai trouvé qu’il était plus simple de copier le fichier test_fixtures.py d’origine et de modifier le setUpModule (ou le tearDownModule).

Sans surprise, une fois setUpModule () frappe l'exception, rien d'autre n'est exécuté.
le tearDownModule () est également non exécuté et le test enregistre une erreur et échoue.

Sortie

exception dans tearDownModule ()

Puisque tearDownModule () est la dernière chose à appeler lors de l’exécution d’un seul module de tests, nous voyons que tout le flux ressemble au bon exemple. Cependant, unittest reconnaît l'erreur et échoue le résultat global.

Sortie

échec à un test

Pour les échecs de test, les assertions et les exceptions, je voulais simplement démontrer que tous les appareils de test sont exécutés, quel que soit le résultat de la méthode de test.

Sortie

affirmer dans un test

Sortie

exception dans un test

Sortie

Retour d'information

Comme toujours, laissez-moi savoir si l'une de ces informations est incorrecte ou trompeuse.

À votre santé.