44 votes

Existe-t-il quelque chose comme «autotest» pour les unittests Python?

Fondamentalement, les notifications growl (ou d'autres rappels) lors de tests de pause ou de passer. Est ce que quelque chose comme cela existe?

Si non, il devrait être assez facile à écrire.. plus Simple serait d'..

  1. exécutez python-autotest myfile1.py myfile2.py etc.py
  2. Vérifiez si les fichiers à être surveillés ont été modifiés (peut-être juste si elles ont été enregistrées).
  3. Exécuter les tests dans ces fichiers.
  4. Si un test échoue, mais, dans l'exécution précédente il est passé, de générer un grognement d'alerte. Même avec des tests qui échouent ensuite passer.
  5. Attendre, et répétez les étapes 2 à 5.

Le problème que je peux voir il y a si les tests sont dans un autre fichier. La solution la plus simple serait d'exécuter tous les tests après chaque sauvegarde.. mais avec un ralentissement de tests, cela peut prendre plus de temps entre les enregistrements, et/ou qu'il pourrait utiliser beaucoup de puissance CPU etc..

La meilleure façon de le faire serait de voir ce que les bits de code ont changé, si la fonction abc() a changé, seulement exécuter des tests qui interagissent avec ce.. Alors que ce serait génial, je pense que ce serait très complexe à mettre en œuvre?

Pour résumer:

  • Est-il quelque chose comme le Rubis outil autotest "(partie de la ZenTest package), mais pour le code Python?
  • Comment voulez-vous vérifier quelles sont les fonctions qui ont changé entre deux révisions d'un script?
  • Est-il possible de déterminer les fonctions d'une commande d'appel? (Un peu comme un revers de sperme)

28voto

jkp Points 20410

J'ai trouvé autonose être assez fiables, mais sniffer semble fonctionner très bien.

$ pip install sniffer
$ cd myproject

Alors au lieu de courir "nosetests", vous exécutez:

$ sniffer

Ou à la place de nosetests --verbose --with-doctest, vous exécutez:

$ sniffer -x--verbose -x--with-doctest

Comme décrit dans le readme, c'est une bonne idée d'installer une de la plate-forme spécifique au système de fichiers d'observation des bibliothèques, pyinotify, pywin32 ou MacFSEvents (tous installable via pip etc)

16voto

dbr Points 66401

autonose créé par gfxmonk:

Autonose est un autotest-comme outil pour python, en utilisant l'excellent nosetest de la bibliothèque.

un autotest de pistes de modifications au système de fichiers et automatiquement ré-exécuté à tout changé tests ou des dépendances à chaque fois qu'un fichier est ajouté, supprimé ou mis à jour. Un fichier de compte comme changé si il a jeles été modifiée, ou si n'importe quel fichier il imports a changé.

...

Autonose a actuellement un GUI natif de OSX et GTK. Si aucune de ces sont disponibles pour vous, vous pouvez vous lancer à la place de la version console (avec l'option --option console).

3voto

mpstx Points 793

Je viens de trouver ceci: http://www.metareal.org/p/modipyd/

J'utilise actuellement thumb.py, mais au fur et à mesure que mon projet actuel passait d'un petit projet à un projet de taille moyenne, je recherchais quelque chose qui permette une analyse un peu plus approfondie de la dépendance, et avec quelques modifications, Modipyd est opérationnel assez rapidement.

2voto

macarthy Points 2507

Peut-être que buildbot serait utile http://buildbot.net/trac

2voto

Torsten Marek Points 27554

Pour votre troisième question, peut-être l' trace module est ce que vous avez besoin de:

>>> def y(a): return a*a
>>> def x(a): return y(a)
>>> import trace
>>> tracer = trace.Trace(countfuncs = 1)
>>> tracer.runfunc(x, 2)
4
>>> res = tracer.results()
>>> res.calledfuncs
{('<stdin>', '<stdin>', 'y'): 1, ('<stdin>', '<stdin>', 'x'): 1}

res.calledfuncs , contient les fonctions qui ont été appelés. Si vous spécifiez countcallers = 1 lors de la création du traceur, vous pouvez obtenir de l'appelant/appelé les relations. Voir les docs de l' trace module pour plus d'informations.

Vous pouvez également essayer d'obtenir les appels par le biais de l'analyse statique, mais cela peut être dangereux en raison de la nature dynamique de Python.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X