Прежде всего: вы не можете назвать свой пакет модульного тестирования верхнего уровня 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 с уникальным именем верхнего уровня, и все должно работать нормально.