Где я должен ставить тесты при упаковке модулей python?
У меня есть модуль, который находится в пространстве имен. Должны ли тесты и данные, на которые полагаются тесты, идут в пространстве имен или на верхнем уровне, где находятся сайты setup.py?
./company/__init__.py
./company/namespace/__init__.py
./company/namespace/useful.py
./company/namespace/test_useful.py
./company/namespace/test_data/useful_data.xml
./setup.py
или
./company/__init__.py
./company/namespace/__init__.py
./company/namespace/useful.py
./test_useful.py
./test_data/useful_data.xml
./setup.py
Вопрос о том, нужно ли устанавливать тесты или нет?
Ответы
Ответ 1
Вы должны поместить свой тестовый модуль в модуль, который он тестирует, в соответствии с The Hitchhiker Guide to Packaging.
Вот их пример:
TowelStuff/
bin/
CHANGES.txt
docs/
LICENSE.txt
MANIFEST.in
README.txt
setup.py
towelstuff/
__init__.py
location.py
utils.py
test/
__init__.py
test_location.py
test_utils.py
Таким образом, ваш модуль будет распространяться с его тестами, и пользователи могут использовать их для проверки того, что он работает с их настройкой.
См. http://the-hitchhikers-guide-to-packaging.readthedocs.org/en/latest/creation.html.
Ответ 2
Пример проекта хранит тесты вне модуля.
Структура каталогов выглядит следующим образом:
├── data
│ └── data_file
├── MANIFEST.in
├── README.rst
├── sample
│ ├── __init__.py
│ └── package_data.dat
├── setup.cfg
├── setup.py
└── tests
├── __init__.py
└── test_simple.py
Related: Руководство по упаковке: https://packaging.python.org/en/latest/
Подсказка: не следуйте инструкциям The Hitchhiker Guide to Packaging. Он не обновлялся с 2010 года!