Почему тесты носа не могут найти элементы в sys.path? - PullRequest
1 голос
/ 16 октября 2010

У меня есть серия юнит-тестов с переносом .Для некоторых моих тестов я хотел бы удалить путь модуля из 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 ]

1 голос
/ 16 октября 2010

Разве ты не имел в виду это?

sys.path.remove('/path/to/remove/from/sys/path')

Если нос не может найти его в sys.path, то его там не было ... нос делает много путаницы с sys.path самостоятельно Почему бы не напечатать sys.path и посмотреть, что это на самом деле, когда запустить под nose

0 голосов
/ 28 октября 2010

Создайте скрипт 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" 
...