Я работаю над программой CLI, используя , нажмите , и я хочу начать добавлять некоторые тесты с анализом покрытия кода, используя cover.py .
IЯ думаю, что хорошим способом реализации тестов будет запуск самого CLI с использованием подпроцесса.Однако, cover.py сообщает об отсутствии покрытия кода, вероятно потому, что экземпляр Python, созданный подпроцессом, не имеет инструментария cover.py.
Я нашел эту ссылку , которая говорит, что я могу отброситьФайл sitecustomize.py
в моем PYTHONPATH всегда заставляет Python начинать измерение покрытия, но я использую Tox для создания venv и запуска тестов.Я не смог найти никаких настроек Tox, которые справляются с этим.
Я нашел этот ответ , который говорит, что я должен просто запустить свой CLI через coverage run
, но похоже, что это работает, только еслиуказан путь к скрипту Python, и я пытаюсь запустить свой CLI через точку входа, определенную в setup.py
.т.е. я должен изменить все мои командные строки в тестовом коде с myprogram
на coverage run myprogram/cli/cli.py
.Я бы предпочел не делать этого, потому что я не ожидаю, что пользователи будут запускать программу.
Таким образом, кажется, что есть два варианта:
выяснитьспособ заставить sitecustomize.py
работать в среде Tox или
во всех командных строках в тестовом коде использовать путь к сценарию вместо точки входа (вероятно, проще в долгосрочной перспективе, но делаеттесты чуть более хрупкие и труднее для понимания).Интересно, есть ли что-то еще, что я пропускаю.