`python -m unittest find` не обнаруживает тесты - PullRequest
34 голосов
/ 23 февраля 2011

Обнаружение юнит-теста Python не находит мои тесты!

Я использовал нос, чтобы обнаружить мои юнит-тесты, и он работает нормально.На верхнем уровне моего проекта, если я запускаю nosetests, я получаю:

Ran 31 tests in 0.390s

Теперь, когда Python 2.7 unittest имеет обнаружение , я попытался использовать

python -m unittest discover

но я получаю

Ran 0 tests in 0.000s

Моя структура каталогов:

myproj/
    reporter/
    __init__.py
    report.py
    [other app modules]
        tests/
        __init__.py
        test-report.py
        [other test modules]

У вас есть идеи, почему алгоритм обнаружения unittest не может найти тесты?

Я использую Python 2.7.1 и нос 1.0.0 на Windows 7.

Ответы [ 2 ]

46 голосов
/ 23 февраля 2011

Поведение является преднамеренным, но документация может прояснить это.Если вы посмотрите на первый абзац в разделе обнаружения тестов, он говорит:

Чтобы тесты проекта были совместимы с обнаружением тестов, все они должны быть импортированы из каталога верхнего уровня проекта (вдругими словами, все они должны быть в пакетах Python).

Следствием этого является то, что имена файлов также должны быть действительными именами модулей Python.test-report.py не проходит этот тест, поскольку test-report не является допустимым идентификатором Python.

Ошибка документации, предполагающая, что это будет упомянуто явно в документации для опции шаблона -p, вероятно, была бы хорошим способом продвижения вперед..

2 голосов
/ 25 апреля 2019

Как кто-то относительно новичок в Python, соглашение об именах в документации подразумевало обратное. Комментарий Бена был очень полезен: шаблон обнаружения по умолчанию ищет тестовые модули с префиксом «test»

Я думал, что самоанализ будет просто искать имена классов и не требовать особого соглашения об именах файлов.

Вот что говорят доктора: https://docs.python.org/3/library/unittest.html python -m unittest find -s каталог_проектов -p " _test.py" Я не смог заставить это работать, но изменив мои имена файлов на «test_ .py» - успех!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...