unitaire - unittest python 3




Écrire des tests unitaires en Python: Comment démarrer? (6)

Comme d'autres ont déjà répondu, il est tard pour écrire des tests unitaires, mais pas trop tard. La question est de savoir si votre code est testable ou non. En effet, il n'est pas facile de tester un code existant, il existe même un livre sur ce sujet: Travailler efficacement avec le code hérité (voir les points clés ou le PDF précurseur ).

Maintenant, écrire les tests unitaires ou non est votre appel. Vous devez juste être conscient que cela pourrait être une tâche fastidieuse. Vous pouvez vous attaquer à cela pour apprendre les tests unitaires ou envisager d'écrire des tests d'acceptation (de bout en bout) en premier, et commencer à écrire des tests unitaires lorsque vous allez changer le code ou ajouter une nouvelle fonctionnalité au projet.

J'ai terminé mon premier projet en Python et maintenant ma tâche est d'écrire des tests pour cela.

Comme c'est la première fois que je fais un projet, c'est la première fois que j'écris des tests pour ça.

La question est, comment puis -je commencer? Je n'ai absolument aucune idée. Quelqu'un peut-il me diriger vers une documentation / tutoriel / lien / livre que je peux utiliser pour commencer à écrire des tests (et je suppose que les tests unitaires en particulier)

Tout conseil sera le bienvenu sur ce sujet.


Il y a, à mon avis, trois grands frameworks de test python qu'il est bon de consulter.
unittest - le module est livré en standard avec toutes les distributions python
nose - peut exécuter des tests unittest, et a moins de passe-partout.
pytest - exécute aussi des tests unittest, a moins de standard, de meilleurs rapports, beaucoup de fonctionnalités supplémentaires

Pour obtenir une bonne comparaison de tous ces éléments, lisez les introductions à http://pythontesting.net/start-here .
Il y a aussi des articles sur les appareils, et plus encore.


Les docs pour unittest serait un bon point de départ.

En outre, il est un peu tard maintenant, mais à l'avenir s'il vous plaît envisager d'écrire des tests unitaires avant ou pendant le projet lui-même. De cette façon, vous pouvez les utiliser pour tester au fur et à mesure, et (en théorie) vous pouvez les utiliser comme tests de régression, pour vérifier que vos changements de code n'ont pas brisé le code existant. Cela vous donnerait le plein avantage de l'écriture des cas de test :)


nosetests est une solution géniale pour les tests unitaires en python. Il supporte à la fois les testcases basés sur unittest et les doctests, et vous permet de démarrer avec un simple fichier de configuration.


Unittest vient avec la bibliothèque standard, mais je vous recommanderais nosetests .

"le nez s'étend unittest pour rendre le test plus facile. "

Je vous recommande également pylint

" analyse le code source de Python à la recherche de bugs et de signes de mauvaise qualité. "


Si vous êtes novice dans l'utilisation d'unittests, l'approche la plus simple à apprendre est souvent la meilleure. Sur cette base, je recommande d'utiliser py.test plutôt que le module unittest par défaut.

Considérez ces deux exemples, qui font la même chose:

Exemple 1:

import unittest

class LearningCase(unittest.TestCase):
    def test_starting_out(self):
        self.assertEqual(1, 1)

def main():
    unittest.main()

if __name__ == "__main__":
    main()

Exemple 2:

def test_starting_out():
    assert 1 == 1

En supposant que les deux fichiers sont nommés test_unittesting.py , comment exécuter les tests?

Exemple 1

$ cd /path/to/dir/
$ python test_unittesting.py

Exemple 2:

$ cd /path/to/dir/
$ py.test




testing