Project: pytest-venv

py.test fixture for creating a virtual environment

Project Details

Latest version
0.3
Home Page
https://github.com/mmerickel/pytest-venv
PyPI Page
https://pypi.org/project/pytest-venv/

Project Popularity

PageRank
0.0031261080270265666
Number of downloads
37204

=========== pytest-venv

.. image:: https://img.shields.io/pypi/v/pytest-venv.svg :target: https://pypi.python.org/pypi/pytest-venv

.. image:: https://github.com/mmerickel/pytest-venv/actions/workflows/ci-tests.yml/badge.svg?branch=main :target: https://github.com/mmerickel/pytest-venv/actions/workflows/ci-tests.yml?query=branch%3Amain

pytest-venv is a simple pytest plugin that exposes a venv fixture. The fixture is used to create a new virtual environment which can be used to install packages and run commands inside tests.

Usage

.. code-block:: python

import os

def test_it(venv):
    venv.install('pyramid', upgrade=True)
    subprocess.check_call(
        [os.path.join(venv.bin, 'pserve'), 'development.ini'],
    )

API

The venv fixture is an instance of pytest_venv.VirtualEnvironment(path) which exposes the following API:

path

The path to the virtualenv directory.

bin

The path to the bin / Scripts directory.

python

The path to the python executable in the virtualenv.

create(system_site_packages=False, python=None, *, extra_args=None)

Create a virtualenv. This is called automatically by the venv fixture. If python is None then the virtual environment will be created using the same executable as the active runtime.

install(pkg_name, editable=False, upgrade=False, *, extra_args=None)

Use pip to install a package into the virtualenv. pkg_name may be a path to a package on disk.

get_version(pkg_name, *, raises=True)

Returns a packaging.version.Version object which is sortable and convertable to a string.

0.3 (2023-11-22)

  • Drop Python 2.7, 3.4, 3.5, 3.6.

  • Add support for Python 3.9, 3.10, 3.11, 3.12.

  • No longer expect pkg_resources to be available in the created virtualenv.

  • No longer depend on setuptools.

  • Add extra_args to install() and create() to pass extra arguments to the underlying commands.

  • Add raises=False option to get_version() to avoid raising an exception if a package is not installed.

0.2.1 (2020-08-04)

  • Depend directly on pytest. See https://github.com/mmerickel/pytest-venv/pull/2

  • Add support for Python 3.6, 3.7, and 3.8. See https://github.com/mmerickel/pytest-venv/pull/2

0.2 (2016-11-27)

  • Add VirtualEnvironment.get_version for querying versions from installed packages in the virtual environment.

  • Support custom python interpreter paths via VirtualEnvironment.create(python=...).

0.1.1 (2016-11-27)

  • Ensure the virtual environment is started with the same Python executable as the current process.

0.1 (2016-11-27)

  • Initial release.