获取nox中的sitepackages目录

2024-09-30 06:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

在tox中,我可以使用envsitepackagesdir魔术变量get the site-packages directory of the current environment。我如何在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')

Tags: installofthetoxgetpytestsessionpackages
2条回答

实际上envsitepackagesdir并不是覆盖所必需的。您可以将模块名称传递给 cov,并且coverage将计算该模块上的覆盖率,无论该模块在何处导入:

import nox

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

只要您实际安装的是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')

相关问题 更多 >

    热门问题