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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top