примеры - Рекурсивное обнаружение юнит-тестов с python3 и без файлов__init__.py




unittest python 3 (2)

У меня есть проект со следующей структурой каталогов:

.
├── requirements.txt
├── main.py
├── tests
    ├── unit
       └── test_thing1.py
       └── test_thing2.py
    └── integration
        └── test_integration_thing1.py
        └── test_integration_thing2.py

Я хочу запустить все тесты одной командой . Если я сделаю python -m unittest discover , тесты не будут выполнены.

Я нашел этот вопрос, который предлагает добавить файл __init__.py для создания пакетов из unit и папок integration . Решение работает, и все тесты работают таким образом.

Но поскольку я использую файлы python3 и __init__.py , не требующиеся для неявных пакетов пространства имен , мне было интересно, есть ли способ сделать это без этих файлов __init__.py .


Используйте pytest. Он обнаруживает тесты в папках.

В вашем случае вам просто нужно установить его через pip ( pip install pytest ), а затем запустить в вашей корневой папке pytest tests .


Я изучил это и думаю, что это, скорее всего, ошибка.

Поэтому я создал отчет об ошибках Python и PR который исправляет эту проблему для меня.

Клонируйте его и посмотрите, будет ли он работать и у вас. С исправлением лучший способ запуска python -m unittest discover -s tests . В противном случае он будет искать, например, виртуальные среды, которые находятся ниже верхнего каталога.





python-unittest