Почему тесты носа не могут найти элементы в sys.path?
У меня есть серия юнит-тестов с носом. Для некоторых моих тестов я хотел бы удалить путь модуля из sys.path
так что нет конфликта с тем, что я тестирую.
sys.path.remove('/path/to/remove/from/sys/path')
Если я запускаю интерпретатор Python и вызываю sys.path
, '/path/to/remove/from/sys/path'
есть в списке. Однако, когда вызывается проверка носа, приведенный выше код не может найти ее и выдает ошибку "not found in list".
Почему нос не может найти путь в sys.path
?
2 ответа
Создайте скрипт get_mod_py_path.py, чтобы установить PYTHONPATH. В этом случае он сбрасывает конфликтный путь.
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
Затем используйте его в bash, который вызывает тестирование носа.
PYTHONPATH=`python get_mod_py_path.py`
nosetests --verbosity=1 --with-gae --where="../tests/unit" --gae-application="../app"
Разве ты не имел в виду это?
sys.path.remove('/path/to/remove/from/sys/path')
Если нос не может найти его в sys.path
тогда его там не было... sys.path
сам по себе. Почему бы не распечатать sys.path
и посмотреть, что это на самом деле, когда бегать под носом