Python importer des modules src lors de l'exécution de tests
Mes fichiers source sont situés sous src et mes fichiers de test sont situés sous tests. Quand je veux exécuter un fichier de test, disons python myTest.py, je reçois une erreur d'importation: "aucun module nommé ASourceModule.py".
Comment importer tous les modules de la source nécessaires pour exécuter mes tests?
4 réponses
Vous devez ajouter ce répertoire au chemin:
import sys
sys.path.append('../src')
Peut-être mettre cela dans un module si vous l'utilisez beaucoup.
Si vous ne souhaitez pas ajouter le chemin source à chaque fichier de test ou modifier votre PYTHONPATH
, vous pouvez utiliser nose pour exécuter les tests.
Supposons que votre structure de répertoire soit comme ceci:
project
package
__init__.py
module.py
tests
__init__.py
test_module.py
, Vous devez importer le module normalement dans le test_module.py
(par exemple, from package import module
). Ensuite, exécutez les tests en exécutant nosetests
dans le dossier du projet. Vous pouvez également exécuter des tests spécifiques en faisant nosetests tests/test_module.py
.
Le __init__.py
dans le tests
répertoire est nécessaire si vous voulez exécuter les tests de l'intérieur il.
, Vous pouvez installer le nez facilement avec easy_install
ou pip
:
easy_install nose
Ou
pip install nose
Nose étend unittest de beaucoup plus de façons, pour en savoir plus à ce sujet, vous pouvez consulter leur site web: https://nose.readthedocs.org/en/latest/
Sur mon système (Windows 10), je devais faire quelque chose comme ceci:
import sys
import os
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/../src")
L'ajout du répertoire relatif directement à sys.path
n'a pas fonctionné
La meilleure solution (la plus gérable) semble utiliser un virtualenv et setuptools / distribute pour installer une copie andebelopment de votre paquet (src). De cette façon, vos tests s'exécutent sur un système entièrement "installé".