2010-05-07 4 views
1

Je suis en train d'écrire un module python qui inclut des exemples. Ces échantillons ne sont pas des tests unitaires, et ils sont trop longs et complexes pour être doctests. Je m'intéresse aux meilleures pratiques pour vérifier automatiquement que ces échantillons fonctionnent. Ma mise en page de projet actuelle est assez standard, sauf qu'il existe un fichier makefile de niveau supérieur avec des cibles de construction, d'installation, d'unittest, de couverture et de profil, qui délèguent la responsabilité à setup.py et à nose selon les besoins.Test du code d'exemple dans les modules python

projectname/ 
    Makefile 
    README 
    setup.py 
    samples/ 
     foo-sample 
     foobar-sample 
    projectname/ 
     __init__.py 
     foo.py 
     bar.py 
    tests/ 
     test-foo.py 
     test-bar.py 

J'ai envisagé d'ajouter un module de Sampletest, ou en ajoutant nose.tools.istest décorateurs aux fonctions point d'entrée des échantillons, mais pour un petit nombre d'échantillons, ces solutions sembler un peu laid.

Cette question est similaire à Automatically Unit Test Example Code, mais je suppose python meilleures pratiques diffèrent de C#

+0

Est-il idéal d'avoir le fichier 'projectname' sous 'projectname?' – Dombey

Répondre

3

La plupart du temps, j'utilise simplement unittest pour tester mes exemples et tests fonctionnels. Ce n'est pas un test unitaire, mais beaucoup de ce que je fais avec le module unittest ne l'est pas. Pour citer Knuth, "un ordinateur ne se soucie pas si ses programmes sont mis à des fins qui ne correspondent pas à leurs noms."

3

vous ne pouvez pas le faire:

if __name__ == "__main__": 
    run_tests() 

dans le code du module? De cette façon, il ne fonctionnera que si le module est appelé en tant que programme autonome, et non lorsqu'il est import dans un autre code.

+0

Le problème est que certains des modules ont plusieurs échantillons, et que le code dans ces échantillons n'est pas lié au code dans le module –