Question

J'ai un problème en ce qui concerne les paquets de python et de test. J'écris une application en utilisant python WX et ont le dossier de base suivant / structure de package pour les parties graphiques. mainframe.py fenêtre a une dépendance à la logpane.py panneau, qui est facilement importé à l'aide d'une importation absolue dans mainframe.py :

import guiapp.utilviews.logpane

Dossier / présentation de l'emballage:

mainapp
   - main.py
   guiapp
       - __init__.py
       utilviews
           - __init__.py
           - logpane.py
           - other stuff...
       mainview
           - __init__.py
           - mainframe.py
           - other stuff here...
       other views...

Cependant, pour les parties de l'application GUI je voudrais, en plus des tests unitaires (et ils ne posent aucun problème), un petit « test » / par exemple pour chaque vue. Cela est, pour le logpane, je voudrais avoir petit exemple runnable qui Lauch une application osseuse nu montrant la vue de vérifier que la mise en page est ok, etc. La façon dont j'ai commencé était que j'avais un

if __name__ == "__main__":
    # create some small window and a wx app
    # instanciate the panel and launch the app
    pass

dans le fichier de mise en œuvre effective du panneau / voir lui-même. Cela fait des merveilles pour la logpane. Je pouvais exécuter le fichier autonome pour jeter un oeil à la vue et de voir qu'elle détenait ensemble.

Mais bien sûr, la stratégie est tombé en panne pour la mainframe.py depuis la dépendance à logpane.py n'a pas pu être résolus. Ce depuis le module principal courant est la mainframe.py et la seule façon mainframe.py peut atteindre le paquet est utilviews si le module principal / lancé est plus haut dans l'arborescence.

Alors, comment puis-je structurer ces types de tests? Pour les tests unitaires que j'utilise nez qui est agréable et prend soin du problème car le nez est lancé par le dossier MainApp (donc toutes les références intrapackage travaux). Mais ces tests sont comme de petits programmes autonomes. Je ne peux tout simplement pas encombrer le dossier MainApp avec ces fichiers python (il y aura beaucoup de fichiers). Y a-t-il une autre façon que je peux y arriver?

Toute entrée est précieuse.

Merci, Rickard

Était-ce utile?

La solution

Vous pouvez utiliser PYTHONPATH. Réglez-le à votre répertoire principal du projet, avant d'exécuter le fichier de test. Il sera alors en mesure de résoudre tous vos importations comme si vous seriez eXecuting de ce répertoire.

$ find
.
./test
./test/test.py
./some
./some/__init__.py

$ cat some/__init__.py 
x = 10

$ cat test/test.py 
import some
print some.x

$ cd test
$ export PYTHONPATH=..
$ python test.py
10
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top