Допустим что имеем: project/ source / fooA.py fooB.py tests/ testfooA.py testfooB.py Чтобы протестировать при помощи модуля unittest из стандартной библиотеки необходимо тестируемый модуль импортировать в скрипте с тестом, однако имеем такую проблему: просто import fooA не работает, что вполне логично, так как в папке с тестами модуля и нет, в PYTHONPATH модуля нет аналогично, решения, которые я видел:
- либо извне проекта корректировать переменную окружения, но как-то лезть и для каждого проекта менять параметры окружения неочень хорошая мысль
- Менять пути поиска и импорта программно через модуль sys. Но опять же это глобальные параметры и хотелось бы их трогать как можно меньше.
- Свалить тесты и тестируемый код водну папку. Это, конечно, упрощает ситуацию, но рушит структуру и управляемость исходным кодом, а потому нехорошо.
- Применять внешние утилиты для тестирования, как пишут интернеты, например, тот же nose вроде бы умеет решать проблему импорта. Впоне вариант, но может я просто не умею готовить стандартные средства, а потому и лезу за расширенными.
Еще насколько я поянл может помочь virtualenv, ведь она может же выставлять индивидуальный набор переменных окружения для каждого проекта. Итак как правильно и лучше организовать структуру проекта и решить проблему связи тестов и модулей