Как пропустить файл test_utility при выполнении Python unittest?
У меня есть пакет утилит, и я включаю в него тесты для некоторых утилит. Однако, в одной из директорий есть куча многократно используемых классов, специфичных для django TestCase, и она продолжает запускаться и терпеть неудачу, когда я запускаю:
python -m unittest
Имя файла - testutils.py, он предназначен для импорта и использования другими приложениями Django, а не для тестирования. Есть ли настройки или файл пропуска, где я могу сказать моему пакету не смотреть на этот файл при запуске тестов?
unittest
по умолчанию проверяет на наличие тестов файлы, соответствующие следующему глобусу: test*.py
. Как вы видите, testutils.py
соответствует этому шаблону и поэтому всегда проверяется на наличие тестов - даже если они предназначены только для заглушек.
Вам нужно либо переименовать testutils.py
во что-то, что не соответствует этому шаблону, либо изменить шаблон glob, который unittest
использует для обнаружения тестовых файлов. В качестве примера, вы можете назвать все свои тестовые файлы как test_*.py
(например, test_foo.py
) и затем запустить свои тесты как:
python -m unittest discover -p 'test_*.py'
Подчеркивание в шаблоне будет соответствовать таким вещам, как test_foo.py
, но не позволит ему соответствовать testutils.py
.
Структура файла может выглядеть следующим образом:
./main.py
./util.py
./tests/util.py
./tests/test_main.py
./tests/test_util.py
Все файлы тестов, независимо от того, содержат ли они тесты или утилитарные функции и классы, содержатся в каталоге tests/
. Таким образом, мы знаем, что tests/util.py
содержит утилиты для тестов, а не является частью кода основного приложения. И что test_util.py
- это файл, который используется для тестирования кода в ./util.py
.
Побочная заметка
util
- не очень хороший дескриптор для модуля или файла. В основном он означает "хлам, для которого я не могу придумать хорошее название". Из краткого описания ваших тестов, возможно, подойдет что-то вроде django_test_harness
.