Tests d'écriture 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.

Puisque c'est la première fois que je fait un projet, c'est la première fois que je serait l'écriture de tests.

la question Est, comment est-ce que je commence? Je n'ai absolument aucune idée. Est-ce que quelqu'un peut me montrer de la documentation/ tutoriel/ lien/ livre que je peux utiliser pour commencer à écrire des tests (et je suppose Unité de test en particulier)

tout conseil sur ce sujet sera le bienvenu.

478
demandé sur user225312 2010-07-30 16:10:06

7 réponses

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

considérez 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 s'appellent test_unittesting.py , comment faire les tests?

exemple 1 (unittest):

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

exemple 2 (pytest):

cd /path/to/dir/
py.test
78
répondu Tim McNamara 2018-05-11 17:12:34

La libre Python livre Dive Into Python a une chapitre sur les tests unitaires que vous pourriez trouver utiles.

si vous suivez les pratiques modernes, vous devriez probablement écrire les tests pendant que vous écrivez votre projet, et ne pas attendre jusqu'à ce que votre projet est presque terminé.

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

68
répondu Mark Byers 2015-08-07 08:47:10

Les docs pour unittest serait un bon endroit pour commencer.

aussi, 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 des tests de régression, pour vérifier que vos modifications de code n'ont pas brisé de code existant. Cela vous donnerait le plein avantage d'écrire des cas de test:)

32
répondu Justin Ethier 2010-07-30 12:13:24

il y a, à mon avis, trois grands cadres de test python qui sont bons à vérifier.

unittest - module standard avec toutes les distributions python

nez - peut effectuer des tests unitaires, et a moins boilerplate.

pytest - exécute également des essais unitaires, a moins de boilerplate, de meilleurs rapports, beaucoup de fonctions supplémentaires fraîches

pour obtenir une bonne comparaison de tous ces, lire à travers les introductions de chacun à http://pythontesting.net/start-here .

Il y a aussi des articles sur les appareils, et plus encore.

32
répondu Okken 2014-04-07 16:16:38

unittest est livré avec la bibliothèque standard, mais je vous recommande nosetests .

nez rallongé unittest pour faciliter les essais. "

je vous recommande aussi pylint

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

27
répondu ssoler 2015-06-19 21:55:33

Comme d'autres 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 mettre le code existant à l'épreuve, il existe même un livre à ce sujet: travailler efficacement avec le code D'héritage (voir key points ou précurseur PDF ).

en train D'é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 à tester les unités ou envisager d'écrire des tests d'acceptation (de bout en bout) d'abord, et commencer à écrire des tests d'unité quand vous changerez le code ou ajouter une nouvelle fonctionnalité au projet.

8
répondu philant 2017-05-20 12:55:31

nosetests est une solution brillante pour tester les unités en python. Il prend en charge à la fois unittest basé testcases et doctests, et vous permet de commencer avec elle avec juste le fichier de configuration simple.

3
répondu Daniel Kluev 2013-05-29 10:33:41