PyTest не обнаруживает новый тестовый модуль, но изменения, внесенные в старые тестовые модули, отражаются в исполнении - PullRequest
0 голосов
/ 02 января 2019

(Это было исправлено, пожалуйста, прочтите правку внизу, даже если никто не отправляет ответ)

Я пишу тесты для приложения, использующего PyTest, и на этот вечер у меня было три тестовых модуля. Они работают, как и ожидалось, и любые изменения, которые я вносил в них, отражаются в выполнении теста (я намеренно ставлю неверные утверждения, чтобы быть полностью уверенным). Однако сегодня вечером я добавил новый модуль (который также начинается с test_ и не содержит класса (поэтому этот ответ SO не применяется), по сути он практически идентичен по структуре одному другому тестовому модулю ) и что бы я ни делал PyTest отказывается это обнаруживать. Я использую VS Code для разработки, но я попытался запустить pytest из терминала, но с тем же эффектом.

Этот вопрос на GitHub предложил мне попробовать rm -rf .cache, который ничего не решил. Я попытался удалить все мои файлы __pycache__, чтобы быть в безопасности, а также файл .pytest_cache, но безрезультатно. Я проверил содержимое файла .pytest_cache после удаления и повторного запуска pytest, и ни один из новых тестов не отображается в nodeids. Я не получаю никаких ошибок, в частности test_grader.py, test_misc.py и test_solution_optimal.py работают отлично. Вот доказательство хаха. test_solution_student.py является точной копией test_solution_optimal.py с несколькими заведомо неверными утверждениями, но pytest не обнаружит ее, что бы я ни делал. Кроме того, __pycache__ в каталоге tests содержит файл .pyc, соответствующий test_solution_student.py, что просто странно для меня. Я даже попытался переименовать файл во что-то другое, думая, что обнаружение может игнорировать второй тест, потому что они оба начинаются с test_solution_, но нет.

Я включил Pytest только в соответствии с рекомендациями здесь и autoTestDiscover .... также включен. Однако, поскольку запуск pytest из терминала не приводит к обнаружению последнего модуля, я также сомневаюсь, что это проблема с моим файлом настроек кода VS.

Структура каталогов:

Top-Level Directory
├── .pytest_cache
│   └── v
├── Grader
│   ├── (Several files to be tested)
│   ├── __init__.py
│   └── __pycache__
├── __pycache__
│   └── globals_store.cpython-37.pyc
├── graphs
│   ├── (Additional irrelevant files)
├── tests
│   ├── __pycache__
│   ├── test_grader.py
│   ├── test_misc.py
│   ├── test_solution_optimal.py
│   └── test_solution_student.py
└── venv
    ├── bin
    ├── include
    ├── lib
    └── share

Я запускаю pytest из каталога верхнего уровня.

Если кто-нибудь может подсказать мне, что еще я могу попробовать, это может привести к обнаружению тестового модуля, и я навсегда останусь в вашем долгу. Я не должен делиться проектом, так как это часть домашнего задания, которое я создаю, но я работаю над воспроизведением этого вопроса в фиктивном проекте.

Edit:

Я "исправил" это; проблема заключалась в том, что я продублировал файл test_solution_optimal (дублирующий код казался мне странным, следовало ожидать, что я доверял своей интуиции, но я не мог использовать этот код «из коробки» и нуждался в тонких изменениях), что привело к я переопределяю прибор, который я сейчас переместил в файл conftest.py (я новичок в pytest, пожалуйста, прости). Теперь я знаю, что не нужно дублировать код (например, когда-либо), но мне все еще интересно, почему это вызывает проблему, поэтому я решил не добавлять это в качестве ответа на мой вопрос. Если кто-нибудь может мне помочь с объяснением, будь моим гостем: D

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