Unittest fixture syntax et reference de flux

By | août 9, 2019

Cours Python en ligne

Cet article contient des exemples sur la manière dont les fonctions et les méthodes de montage de test unittest sont écrites et dans quel ordre elles sont exécutées. Cela peut paraître long, mais c’est surtout des exemples de code et des exemples de sortie.

Je veux que ce soit une référence utile à la fois pour la syntaxe et le flux des appareils unittest.
Si j'ai oublié quelque chose, veuillez commenter ci-dessous et je mettrai à jour le post.

Contenu

Intro: Test de logiciels

Le terme appareils d'essai signifie vraiment deux choses.
Les équipements de test sont les ressources et les conditions initiales dont un test a besoin pour fonctionner correctement et indépendamment des autres tests.
La phrase a également pris de l'importance pour désigner les fonctions et les méthodes utilisées pour gérer les ressources et l'environnement.

Pour le reste de cet article, je parle vraiment des fonctions et des méthodes quand je dis agencements.

Les appareils de test sont des méthodes et des fonctions qui s'exécutent avant et après un test.

L'objectif est de fournir aux développeurs des points d'ancrage leur permettant de définir les conditions préalables requises pour le test, ainsi que le nettoyage après le test.

Dans de nombreux cas, il s'agira d'affecter, d'ouvrir ou de se connecter à une ressource de la configuration, et de désallouer, de fermer ou de se déconnecter dans la zone de décomposition.

Cependant, ce n’est que l’intention. Vous pouvez les utiliser vraiment comme vous le souhaitez.

Une bonne utilisation des fixtures est de configurer les structures ou les variables de la même manière pour tous les tests.
Cela permet de s'assurer que les tests peuvent être exécutés individuellement ainsi que dans un ensemble et dans n'importe quel ordre.

Exemple de cas commun

Les méthodes de montage les plus courantes sont setUp et tearDown.
Les méritent d'être les plus courantes, car ce sont elles qui permettent l'indépendance du test.
le installer() la méthode s'exécute avant chaque test.
le abattre() La méthode s'exécute après chaque test.

Voici du code.

Et voici la sortie.

Notez que les tests sont emballés avec installer() et abattre() comme promis.

Flux de traçage avec logPoint ()

Dans le code ci-dessus, j’ai écrit une méthode utilitaire. logPoint () pour démontrer le flux de contrôle à travers le test.
Je suis sûr qu’il ya une manière plus propre de faire cela, mais je ne pourrais pas trouver une méthode plus propre.
Je ne vais pas décrire le inspecter module.
Cependant, il est bon de noter que j’utilise la id () méthode qui fait partie de unittest.TestCase pour obtenir le nom du test en cours. Ceci est valable pendant la méthode de test, ainsi que setUp, tearDown et toutes les méthodes appelées à partir de la méthode de test.

Exemple de test complet

Bien que installer() et abattre() sont les méthodes qui nous permettent de nous assurer que chaque test peut être exécuté indépendamment et dans n’importe quel ordre, nous disposons également d’autres méthodes.

Je pense que ceci est une liste complète.

  • installer() / tearDown () `- avant et après les méthodes de test
  • setUpClass () / tearDownClass () – avant et après une classe de tests
  • setUpModule () / tearDownModule () – avant et après un module de tests
  • Fonctions de nettoyage – méthodes supplémentaires tearDown pouvant être ajoutées au moment de l'exécution à toute méthode de test lors de la configuration ou lors de la méthode de test elle-même.

Voici du code avec tout sauf les fonctions de nettoyage.

Débit du dispositif de test complet

Ajouter des appels de nettoyage

Supplémentaire nettoyer Des méthodes peuvent être ajoutées à partir d'une méthode test ou d'une méthode setUp.
Les fonctions de nettoyage sont appelées APRES tearDown () mais AVANT tearDownClass ()

Sortie

Ignorer les tests dans setUp ()

Dans la méthode setUp, vous pouvez décider de passer un test.
Si ignoré, le test ne sera pas exécuté.
AUSSI, la méthode tearDown ne sera pas exécutée.

Sortie

Exceptions dans les fixtures

Dans tous les exemples ci-dessus, les montages de test sont très simples et rien ne peut mal tourner.
Cependant, ce n’est pas toujours le cas, bien sûr.
Il est important de comprendre ce qui se passe dans votre flux de contrôle en cas de défaillance d’un dispositif de test.

Que se passe-t-il si une fonction de montage de test frappe une assertion ou une exception?
Cela dépend de la méthode / fonction de l'appareil.

Mais…. c’est un sujet pour un autre post.
Plus précisément, que se passe-t-il lorsque les appareils les plus modestes échouent

Commentaires, s'il vous plaît

J'espère que cela a été instructif et j'espère que ce sera une référence précieuse pour la syntaxe et le flux de fonctions et méthodes untestest.

Si cela est utile, j'aimerais vraiment savoir. S'il vous plaît laissez un commentaire.
La rétroaction me permet de continuer.

À votre santé.