C'est une question qui est fréquemment demandé dans différentes formes, et souvent obtient "lol, vous ne le font pas correctement" les réponses. Assez sûr que c'est parce qu'il y a un sens commun scénario de gens (dont moi) sont en train de l'utiliser comme une mise en œuvre, et la solution n'est pas évidente (si vous ne l'avez pas fait avant).
Serait accepter une réponse "vous permet de la sortir de la bouteille".
Compte tenu de
project/
__init__.py
/code
__init__.py
sut.py
/tests
__init__.py
test_sut.py
Où tests_sut.py commence:
import code.sut
L'exécution de nosetests dans le répertoire racine conduit à:
ImportError: No module named code.sut
Avenues voyagé:
a) faire un par rapport à l'aide de
from ..code import sut
b) ajouter la racine du projet de PYTHONPATH
c) utiliser le
sys.path.append
pour ajouter le chemin .. avant que les importations au début de chaque module de test.
d) n'oubliez pas de faire un
setup.py
sur le projet d'installer les modules dans le site-packages avant l'exécution des tests.
Ainsi, l'exigence est d'avoir des tests situé sous le package de test de racine qui ont accès au projet. Chacun des ci-dessus ne se sentent pas "naturel" pour moi, se sont avérés problématiques ou sembler trop dur travail!
En java, cela fonctionne, mais, fondamentalement, par la force de votre outil de construction / IDE de placer tous vos classes sur le chemin de la classe. Peut-être le problème est que j'attends "magie" de Python? L'avons noté dans le Flacon webframework tests, l'option d) semble être préféré.
Dans tous les cas, les déclarations ci-dessous recommander une solution serait de supprimer la sensation de "unnaturalness" dans mon propre.