L'exécution de unittest avec test type de structure de répertoire

La très commune de la structure de répertoire, même pour un simple module Python semble être de séparer les tests unitaires dans leur propre test répertoire:

new_project/
    antigravity/
        antigravity.py
    test/
        test_antigravity.py
    setup.py
    etc.

voir, par exemple, ce Projet de Python howto.

Ma question est simple Quelle est la manière habituelle de réellement exécuter les tests? Je suppose que c'est évident pour tout le monde sauf moi, mais vous ne pouvez pas exécuter python test_antigravity.py à partir du répertoire test comme sa import antigravity échouera car le module n'est pas sur le chemin.

Je sais que je pourrais modifier PYTHONPATH et d'autres le chemin de recherche liés trucs, mais je ne peux pas croire que c'est la façon la plus simple - c'est très bien si vous êtes le développeur, mais pas réaliste de s'attendre à ce que vos utilisateurs à utiliser si ils veulent juste pour vérifier les tests sont de passage.

L'autre alternative, c'est juste pour copier le fichier de test dans l'autre répertoire, mais il semble un peu stupide et rate le point de les avoir dans un répertoire distinct pour commencer.

Donc, si vous aviez téléchargé la source de mon nouveau projet, comment voulez-vous exécuter les tests unitaires? Je préfère une réponse qui s'permettez-moi de dire à mes utilisateurs: "Pour exécuter les tests unitaires ne X."

  • La bonne solution lorsque vous avez besoin de définir le chemin de recherche est de... définir le chemin de recherche. Quel type de solution que vous l'espériez?
  • une autre meilleure solution est d'utiliser le unittest interface de ligne de commande comme décrit dans mon réponse ci-dessous de sorte que vous n'avez pas à ajouter le répertoire du chemin.
  • Même ici. J'ai juste lancé sur l'écriture de mes premiers tests unitaires pour un petit projet de Python et a pris plusieurs jours à essayer de raisonner avec le fait que je ne peux pas facilement exécuter un test tout en gardant mes sources dans un répertoire src et de tests dans un répertoire de test, apparemment avec un test de cadres. Je vais finalement accepter les choses, de trouver un moyen; mais cela a été très frustrant introduction. (Et je suis un test d'unité de vétéran à l'extérieur de Python.)
InformationsquelleAutor Major Major | 2009-12-13