Py.test Aucun module nommé *
J'ai un dossier structure comme ceci
App
--App
--app.py
--Docs
--Tests
--test_app.py
Dans mon test_app.py file
j'ai une ligne pour importer mon application module. Quand je lance py.essai sur le dossier racine, j'ai cette erreur sur aucun module nommé app. Comment dois-je configurer cela?
source d'informationauteur zsljulius
Vous devez vous connecter pour publier un commentaire.
Donc, vous êtes en cours d'exécution
py.test
de/App
. Êtes-vous sûr/App/App
est dans votre$PYTHONPATH
?Si ce n'est pas le code qui tente d'
import app
échouera avec un message de ce type.EDIT0: y compris l'info de mon commentaire ci-dessous, par souci d'exhaustivité.
Une tentative d'importation de l'app ne sera possible que s'il a été exécuté à l'intérieur de
/App/App
ce qui n'est pas le cas ici. Vous voudrez probablement faire/App/App
un paquet en mettant__init__.py
à l'intérieur, et de changer votre importation de qualifier application commefrom App import app
.EDIT1: par la demande, l'ajout d'explication de la part de mon deuxième commentaire ci-dessous.
En mettant
__init__.py
à l'intérieur de/App/App
ce dernier devient un package. Ce qui signifie que vous pouvez importer à partir d'elle, aussi longtemps que il - l'annuaire - est visible dans le$PYTHONPATH
. I. e. vous pouvez le faire à partir deApp import app
si/App
est dans le$PYTHONPATH
. Votre répertoire de travail courant est automatiquement ajouté à$PYTHONPATH
de sorte que lorsque vous exécutez un script à partir de/App
l'import de travail.J'ai déjà eu un
__init__.py
fichier dans le/App/App
répertoire et voulait exécuter des tests à partir de la racine du projet, sans chemin d'accès modificateur de magie:La sortie immédiatement ressemble à ceci:
De travail avec Python 3 et obtenir la même erreur sur un projet similaire, mise en page, je l'ai résolu en ajoutant un
__init__
fichier à montests
module.Je ne suis pas très à l'emballage et à l'importation, mais je pense que cela aide
pytest
de travail où la cibleApp
module est situé.