Les Tests De Scripts Python
Comment puis-je tester la sortie standard sortie d'un script Python avec un framework de test comme doctest, unittest, le nez, etc? Par exemple, dire que l'exécution de mon script "todo.py --list" doit retourner "sortir les poubelles". J'ai lu quelqu'un qui se sépare de la sortie standard (STDOUT) impression de la partie du script à partir de la partie qui génère la sortie imprimée. Je suis habitué à l'aspersion des instructions d'impression, tout autour de mes scripts shell. Est-ce simplement un TDD hostile habitude je devrais casser ou est-il un moyen de tester facilement pour une impression correcte de sortie?
doctest sait déjà comment gérer la sortie...
D'abord. Recherche: stackoverflow.com/questions/3481561/.... De seconde en seconde. Recherche: La doctest documentation (docs.python.org/library/...), dit "de Sortie vers stdout est capturé, mais pas de sortie sur la sortie stderr".
D'abord. Recherche: stackoverflow.com/questions/3481561/.... De seconde en seconde. Recherche: La doctest documentation (docs.python.org/library/...), dit "de Sortie vers stdout est capturé, mais pas de sortie sur la sortie stderr".
OriginalL'auteur nonzero | 2011-05-12
Vous devez vous connecter pour publier un commentaire.
Je vois deux façons :
Rediriger stdout au cours de la unittest:
L'utilisation d'un enregistreur pour vos sorties et de l'écouter dans votre test.
OriginalL'auteur Christophe de Vienne
Python propre suite de tests ne un peu les choses, et nous utilisons deux techniques principales:
Rediriger stdout (comme d'autres l'ont suggéré). Nous utilisons un gestionnaire de contexte pour ce:
À l'aide de la
subprocess
module. Nous utilisons quand nous voulons tester la manipulation des arguments de ligne de commande. Voir http://hg.python.org/cpython/file/default/Lib/test/test_cmd_line_script.py pour plusieurs exemples.OriginalL'auteur ncoghlan
lorsque vous utilisez py.test pour vos tests. Vous pouvez utiliser le bouton "capsys" ou la "capfd" test des arguments de la fonction à exécuter affirme contre STDIN, STDOUT et
Plus de détails peuvent être trouvés dans la py.test docs
OriginalL'auteur circus
Ici est quelque chose que j'ai écrit, un soir, que les tests de script s'exécute. Notez que le test ne couvre pas la base de cas, mais il n'est pas assez approfondie pour être un unittest par lui-même. Considérez que c'est un premier projet.
Et voici le script qui a été testé, zs.py Ce n'modèle de recherche dans une chaîne similaire à la façon dont les biochimistes rechercher des modèles dans les données ADN ou de protéines de données de la chaîne.
OriginalL'auteur Michael Dillon
Je pourrait aussi vouloir regarder le TextTest cadre de tests. Il met l'accent plus sur les fonctionnels et des tests d'acceptation (donc, se prête moins à l'unité de test), et s'appuie fortement sur un programme de sortie textuelle. De cette façon, votre habitude devient une bonne :-).
OriginalL'auteur ThomasH