Question Écriture des tests unitaires en Python: comment commencer? [fermé]


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 est-ce que je commence? 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 accueilli sur ce sujet.


472
2017-07-30 12:10


origine


Réponses:


Si vous êtes un débutant dans l’utilisation des désamorçages, l’approche la plus simple est souvent la meilleure. Sur cette base, je recommande d'utiliser py.test plutôt que le défaut unittest module.

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

Exemple 1 (unittest):

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 (pytest):

def test_starting_out():
    assert 1 == 1

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

Exemple 1 (unittest):

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

Exemple 2 (pytest):

cd /path/to/dir/
py.test

71
2017-07-30 12:23



Le livre Python gratuit Plongez dans Python a un chapitre sur les tests unitaires que vous pourriez trouver utile.

Si vous suivez des pratiques modernes, vous devriez probablement écrire les tests pendant que vous écrivez votre projet, et ne pas attendre que votre projet soit presque terminé.

Un peu tard maintenant, mais maintenant vous savez pour la prochaine fois. :)


67
2017-07-30 12:14



Les documents pour Test de l'unité serait un bon endroit pour commencer.

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 d'écrire des cas de test :)


32
2017-07-30 12:13



Il y a, à mon avis, trois grands frameworks de test python qu'il est bon de consulter.
Test de l'unité - le module est livré avec toutes les distributions python
nez - peut exécuter des tests unittest, et a moins de passe-partout.
pytest - exécute également 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.


32
2017-11-05 06:55



Test de l'unité est livré avec la bibliothèque standard, mais je vous recommande nosetests.

"le nez s'étend le plus souvent pour faciliter les tests."

Je vous recommande également pylint

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


27
2017-07-30 13:27



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 pas. En effet, il n'est pas facile de mettre à l'épreuve du code existant, il y a même un livre à ce sujet: Travailler efficacement avec le code existant (voir points clés ou précurseur PDF).

L'écriture des tests unitaires est maintenant 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.


7
2017-07-30 12:31



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.


3
2017-07-30 13:07