Pourquoi ne peut nosetests trouver un des éléments sys.path?
-
08-10-2019 - |
Question
J'ai une série de tests unitaires que je suis en cours d'exécution avec nez . Pour certains de mes tests, je voudrais supprimer le chemin d'un module du sys.path
donc il n'y a pas de conflit avec ce que je teste.
sys.path.remove('/path/to/remove/from/sys/path')
Si je lance l'interpréteur Python et appel sys.path
, le '/path/to/remove/from/sys/path'
est là dans la liste. Cependant, une fois nosetests est appelé, le code ci-dessus ne peut pas trouver et me donne une erreur « ne figure pas dans la liste ».
Pourquoi nez pas en mesure de trouver le chemin dans sys.path
?
La solution 2
Créer un script, get_mod_py_path.py, pour définir la PYTHONPATH. Dans ce cas, il laisse tomber le chemin conflictuel.
import os
import sys
# Remove the global Python modules from the PYTHONPATH.
path = os.environ['PYTHONPATH'].split(os.pathsep)
if os.environ['GLOB_PY_MODULES'] in path:
path.remove(os.environ['GLOB_PY_MODULES'])
# Construct the new path and print it.
path = ':'.join(path)
print path
Utilisez ensuite dans un bash qui appelle nosetests.
PYTHONPATH=`python get_mod_py_path.py`
nosetests --verbosity=1 --with-gae --where="../tests/unit" --gae-application="../app"
Autres conseils
Avez-vous pas dire cela?
sys.path.remove('/path/to/remove/from/sys/path')
Si nez ne peut pas trouver dans sys.path
alors il était pas là ... nez fait beaucoup de diddling avec sys.path
lui-même. Pourquoi ne pas imprimer sys.path
et voir ce qu'il est en réalité lorsqu'il est exécuté sous nez