(Это было исправлено, пожалуйста, прочтите правку внизу, даже если никто не отправляет ответ)
Я пишу тесты для приложения, использующего 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