Как запустить витую пробную версию на всех тестах в каталоге? - PullRequest
3 голосов
/ 27 сентября 2011

Как запустить пробную версию, чтобы она выполняла все тесты в каталоге? Все мои модульные тесты проходят, если я запускаю пробную версию каждого файла отдельно, но если я пытаюсь что-то вроде ...

trial test/

в тестовом каталоге, он дает мне одно "PASSED" и следующее сообщение ...

UserWarning:  (for module __init__) not in path importer cache (PEP 302 violation
    - check your local configuration).

вместо того, чтобы фактически запускать все тесты в каталоге.

1 Ответ

5 голосов
/ 27 сентября 2011

Прежде всего: вы не можете назвать свой пакет модульного тестирования верхнего уровня test.Это название модульных тестов Python, поэтому вы никогда не сможете запускать свои тесты в установленной конфигурации, и в зависимости от того, как настроен ваш питон, вы можете в конечном итоге импортировать собственные тесты python вместо своих собственных.

Второе: sys.path - обширная и тонкая загадка.

trial поддерживает запуск файлов и каталогов в качестве быстрого начального хака, но на самом деле никогда не может быть полностью правильным в отношении использования имен путей.Правильно сделать, чтобы пройти тестирование имени модуля (или пакета), которое оно может импортировать как модуль python и проверить.

Так что если ваша структура каталогов выглядит следующим образом:

~/Projects/MyProject/
~/Projects/MyProject/myproject/
~/Projects/MyProject/myproject/__init__.py
~/Projects/MyProject/myproject/stuff.py
~/Projects/MyProject/myproject/test/
~/Projects/MyProject/myproject/test/__init__.py
~/Projects/MyProject/myproject/test/test_stuff.py

тогда вы должны запускать свои тесты следующим образом:

PYTHONPATH=$HOME/Projects/MyProject (cd /tmp; trial myproject.test)

другими словами, не запускайте свои тесты из каталога вашего проекта;это сбрасывает каталоги _trial_temp по всему вашему исходному коду, сбивает с толку «место, из которого я загружаю свой код» и «текущий каталог» и, как правило, вносит путаницу в разные вещи, которые потом будет трудно распутать.

Итак,настройте PYTHONPATH и PATH с помощью инструмента управления путями по вашему выбору: Combinator , setup.py develop , virtualenv - или просто сбросспрячьте в свой ~/.bashrc - и затем запустите trial из какого-то временного местоположения в пакете Python с уникальным именем верхнего уровня, и все должно работать нормально.

...