#python #code-coverage
Вопрос:
Привет, я хочу запустить покрытие в своей виртуальной среде. покрытие устанавливается в локальном/глобальном/пользовательском каталоге.
Причина в том, что мне нужно, чтобы у моего venv были строго контролируемые зависимости, каждая из которых была проанализирована и одобрена SecOps, а охват приносил и мог принести в будущем множество неизвестных и неконтролируемых зависимостей.
И, таким образом, охват необходим только для целей развития, я не вижу смысла, почему он должен быть частью моего requirements.txt
Есть ли способ справиться с этим таким образом, чтобы покрытие было установлено в моих локальных/глобальных/пользовательских зависимостях (извините, я новичок в экосистеме python, просто экстраполируя другие экосистемы на эту), но оно не будет распространяться на мою серверную сторону (которая заполнена CI, который устанавливает все, что находится в requirements.txt).
Все это использует pip, и никакой другой менеджер зависимостей не будет и не может быть использован.
Ошибка, которую я получаю, заключается в том, что покрытие не может найти зависимости, установленные в моем venv, даже если я запускаю покрытие с активированного venv.
Это методы, которые я пробовал до сих пор, кажется, ничего не работает
Форсирование PYTHONPATH
export PYTHONPATH=`pwd`
coverage run --omit=$omit_paths -m unittest discover
coverage html --omit=$omit_paths
Принудительное выполнение sys.path
запуск покрытия, указывающего на файл начальной загрузки, который делает обнаружение и заставляет sys.path быть таким, как есть, при запуске unittest в одиночку, что работает просто отлично
./test/init.py
...
sys.path = [# EXPORT of sys.path existing when running unittest only]
...
Спасибо.
Комментарии:
1. Можете ли вы показать конкретную ошибку, которую вы получили?
2. Он не может найти сторонний модуль, установленный в venv, типичная ошибка «модуль не найден» в python. Извините за секретность, но не могу показать этот журнал 🙁
3. FWIW, по умолчанию, покрытие не имеет зависимостей. Если вы используете «покрытие установки pip», оно не установит ничего, кроме покрытия.