Получить каталог пакетов сайта в nox

#python #nox

#python #nox

Вопрос:

В tox я могу получить каталог пакетов сайта текущей среды с envsitepackagesdir помощью волшебной переменной. Как мне сделать то же самое в nox ? Это особенно полезно при попытке получить охват моего пакета.

 import nox

@nox.session()
def test(session):
    session.install('.')
    session.install('pytest', 'pytest-cov')
    session.run('pytest', '--cov', f'{session.virtualenv.site_packages_dir}/mypackage')
 

Ответ №1:

Пока вы фактически устанавливаете среду nox (не используете venv_backend='none' ), вы можете вычислить это из местоположения виртуальной среды и platform.sys :

 import nox

@nox.session()
def test(session):
    if platform.system() == "Windows":
        site_packages = f'{session.virtualenv.location}/Lib/site-packages'
    else:
        site_packages = f'{session.virtualenv.location}/lib/python{session.python}/site-packages'

    session.install('.')
    session.install('pytest', 'pytest-cov')
    session.run('pytest', '--cov', f'{site_packages}/mypackage')
 

Ответ №2:

На envsitepackagesdir самом деле это не обязательно для покрытия. Вы можете передать имя модуля --cov и coverage вычислить покрытие для этого модуля везде, где он импортируется:

 import nox

@nox.session()
def test(session):
    session.install('.')
    session.install('pytest', 'pytest-cov')
    session.run('pytest', '--cov', 'mypackage')