Подтвердить что ты не робот

Где я должен ставить тесты при упаковке модулей 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

Вопрос о том, нужно ли устанавливать тесты или нет?

4b9b3361

Ответ 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 года!