Часто в проектах на Python принято разделять unit-тесты, помещая их в отдельную директорию ‘test’. Такая структура может выглядеть следующим образом:
new_project/
my_module/
my_module.py
test/
test_my_module.py
setup.py
etc.
Однако при попытке запустить тесты, например, командой python test_my_module.py
из директории test
, возникает проблема. Импорт модуля my_module
в test_my_module.py
не удаётся, поскольку модуль не находится в текущем пути поиска.
Можно было бы изменить переменную окружения PYTHONPATH или использовать другие трюки, связанные с путем поиска, но это не самый простой и удобный способ. Также можно было бы просто скопировать файл теста в другую директорию, но это кажется немного глупым и упускает смысл разделения тестов в отдельную директорию.
Вместо этого применяют следующий подход. В Python есть встроенный модуль unittest
, который обеспечивает инфраструктуру для написания и запуска тестов. Чтобы запустить все тесты из указанной директории, можно использовать команду python -m unittest discover
.
Если необходимо запустить тесты из конкретного файла, можно использовать команду:
python -m unittest test.test_my_module
Здесь test.test_my_module
— это путь к модулю теста, относительно корневого каталога проекта.
Таким образом, проблема запуска unit-тестов в типичной структуре каталогов решается достаточно просто и эффективно с помощью встроенного модуля unittest
.
Добавить комментарий