J’essaie de démarrer avec unité de test en Python et je me demandais si quelqu'un pourrait-il me les avantages et les inconvénients de doctest et unittest. Quelles conditions pour utiliseriez-vous ?
Réponses
Trop de publicités?Les deux sont précieux. J'utilise à la fois doctest et un autre framework de test unitaire (nez) prenant la place de unittest. J'utilise doctest pour les cas où le test est de donner un exemple de l'utilisation qui est vraiment utile que de la documentation. Généralement je ne fais pas ces tests globale, visant uniquement pour information. Je suis de l'utilisation efficace de doctest dans le sens inverse: ne pas tester mon code est correct basé sur mon doctest, mais pour vérifier que ma documentation est correcte sur la base du code.
La raison est que je trouve complet doctests va encombrer votre documentation beaucoup trop, donc soit vous retrouver avec soit inutilisable docstrings, ou des analyses incomplètes.
Pour tester le code, le but est de tester tous les cas, plutôt que d'illustrer ce que l'on fait, par exemple, qui est un autre objectif qui je pense est mieux satisfaits par d'autres cadres.
J’utilise presque exclusivement unittest.
De temps en temps, je vais mettre quelque chose dans un docstring utilisable par doctest.
95 % des cas de test sont unittest.
Pourquoi ? J’aime garder le code un peu plus court et plus précis. Parfois des cas de test aider à clarifier un docstring. La plupart du temps, les cas de test de l’application sont trop longues pour un docstring.
Je travaille comme un bioinformatician, et la plupart du code que j'écris est "un temps, une tâche" scripts, code qui sera exécuté qu'une seule fois ou deux fois, et que d'exécuter une seule tâche spécifique.
Dans cette situation, écrit gros unittests peut-être exagéré, et doctests sont un compromis utile. Ils sont plus rapides à écrire, et depuis qu'ils sont normalement incorporés dans le code, ils permettent de toujours garder un œil sur la façon dont le code doit comporter, sans avoir à disposer d'un autre fichier ouvert. C'est utile lors de l'écriture de script de petites.
Aussi, doctests sont utiles lorsque vous devez passer votre script à un chercheur qui n'est pas expert en programmation. Certaines personnes trouvent qu'il est très difficile de comprendre comment unittests sont structurés; d'autre part, les doctests sont des exemples simples d'utilisation, afin que les gens il suffit de copier et de les coller pour voir comment les utiliser.
Donc, pour reprendre ma réponse: doctests sont utiles lorsque vous avez à écrire de petits scripts, et quand vous devez les transmettre ou de les montrer à des chercheurs qui ne sont pas des informaticiens.
Si vous êtes juste de commencer avec l'idée de l'unité de test, je voudrais commencer par doctest
parce que c'est tellement simple à utiliser. C'est également tout naturellement fournit un certain niveau de la documentation. Et pour des tests plus complets, avec doctest
, vous pouvez placer des tests dans un fichier externe afin de ne pas encombrer votre documentation.
Je dirais unittest
si vous êtes en provenance d'un contexte d'utilisation de JUnit ou quelque chose de similaire, où vous voulez être en mesure d'écrire des tests unitaires dans l'ensemble, de la même manière que vous avez été d'ailleurs.