2010-03-04 6 views
5

Quelle est la manière pythonique d'écrire un unittest pour voir si un module est correctement installé? Par correctement installé je veux dire, il ne soulève pas un ImportError: Aucun module nommé foo.Comment écrire un unittest pour importer un module en Python

+6

Généralement, il n'y a pas beaucoup de tests unitaires. Ne faites-vous pas confiance à la déclaration 'import'? La ligne d'importation de code est si simple - et si facile à inspecter - qu'il semble un peu idiot de la tester unitaire. Pourquoi testez-vous l'instruction 'import'? –

+0

Comme je dois déployer mon application Django sur un serveur différent et qu'elle nécessite des modules supplémentaires, je veux m'assurer que tous les modules requis sont installés. Par exemple, assurez-vous que simplejson est installé pour python 2.5. Bien sûr, je fais confiance à la déclaration d'importation, je ne veux pas oublier d'installer un module dont j'ai besoin. – DrDee

+1

On dirait que vous exécutez des tests sur l'environnement de production, ce qui est ... étrange. Quoi qu'il en soit, vous testez que vous avez des dépendances appropriées, ce qui est un travail pour le gestionnaire de paquets. Créez des paquets pour votre application, ou utilisez des gestionnaires de dépendances pythonic (l'installation de pip et pip -r requirements.txt dans virtualenv vient à l'esprit). – Almad

Répondre

5

As I have to deploy my Django application on a different server and it requires some extra modules I want to make sure that all required modules are installed.

Ce scénario n'est pas du tout un test unitaire.

Ceci est un processus de préparation de production et ce n'est pas - techniquement - un test de votre application.

C'est une question sur l'environnement. La nôtre comprend des dizaines de choses.

Commencez par un script simple comme celui-ci. Ajouter chaque chose dont vous avez besoin pour être sûr qu'il existe. Il suffit d'exécuter ce script dans chaque environnement dans le cadre de l'installation. Ce n'est pas du tout un test unitaire. C'est une condition préalable à l'installation de l'installation.

+0

Merci beaucoup, et désolé d'utiliser la mauvaise terminologie, il a évidemment mis tout un tas de gens sur le mauvais pied :) – DrDee

1

Je ne vois pas pourquoi vous auriez besoin de tester, mais quelque chose comme:

def my_import_test(self): 
    import my_module 

Si une erreur d'importation est élevée le test a échoué, sinon il passe.

+0

Peut-être que je ne suis pas clair dans ce dont j'ai besoin. Je veux tester si l'importation d'un module est réussie ou non, je peux voir quels modules sont manquants et doivent être installés. Alors, comment puis-je utiliser une déclaration self.assertUnequals ... – DrDee

Questions connexes