#python #pytest #pyenv
#питон #пытест #pyenv
Вопрос:
Я хотел бы локально протестировать некоторые из моих компонентов в разных виртуальных средах (с разными версиями python и пакетов).
По сути, делайте то, что позволяют мне делать инструменты CI, такие как действия на github, но локально и из интерфейса python.
Какие инструменты я мог бы использовать для этого. Я начал писать свой собственный, выполняя системные вызовы для выполнения CRUD в средах, установки зависимостей и т. Д. Но я предполагаю, что это достаточно распространенный вариант использования, чтобы иметь существующие решения.
В идеале я мог бы получить экземпляр make context manager, который управлял бы настройкой среды и удалением. Что-то вроде:
with virtual_environment(virtual_env_name='3.9.0/envs/test2') as v: # setup my dependencies (within environment `v`) v.syscall('python -m pip install --upgrade pip') v.syscall('sudo apt-get -qq update') v.syscall('sudo apt-get install -y portaudio19-dev python-pyaudio libsndfile1') v.syscall('pip install scikit-learn') v.syscall('pip install numpy==1.21.1') # test what I need to test (within environment `v`) ... # on error, or exit, do clean up (perhaps delete the virtual env, etc.)
Примечание: Я склонен использовать pyenv
для сред и pytest
для тестирования.