Skip to main content

A pytest plugin for testing Jupyter libraries and extensions.

Project description

pytest-jupyter

A set of pytest plugins for Jupyter libraries and extensions.

Build Status codecov

Basic Usage

First, install pytest-jupyter from PyPI using pip:

pip install pytest-jupyter

This installs the basic pytest-jupyter package that includes fixture definitions for the various Jupyter-based pytest plugins.

To use one of these plugins, you'll also need to install their dependencies. This requires a second pip install call. For example, if you'd like to use the jupyter_server plugin, you'll need to call:

pip install "pytest-jupyter[server]"

This should install everything you need for the plugin to work.

To use a plugin, add it to the pytest_plugins list in the conftest.py of your project's root test directory.

# inside the conftest.py

pytest_plugins = ["pytest_jupyter.jupyter_server"]

This library includes an echo_kernel, which is useful to speed up testing. You must have either "pytest-jupyter[server]" or "pytest-jupyter[client]" installed to use the echo kernel.

The pytest_jupyter.jupyter_client plugin provides an installed echo_kernel_spec as a fixture, and a start_kernel fixture that provides a factory function that starts a kernel using the echo kernel by default.

Note: The server plugin also includes the client plugin, so you can use both sets of fixtures with "pytest_jupyter.jupyter_server". Both the client and server plugins also include the core fixtures.

Note: The client and server plugins use pytest-tornasync for async test suite running. It may not compatible with pytest-asyncio, meaning that all fixtures must be synchronous. You can use the asyncio_loop fixture and run asyncio_loop.run_until_complete against an async function in your fixtures if needed.

The server fixures use the echo kernel by default. To override this behavior, override the jp_server_config fixture and add the following config:

{
    "MultiKernelManager": {
        "default_kernel_name": "<desired_kernel_name"
    }
}

All fixtures inside the plugin (e.g. jupyter_server) will be available to all of your project's unit tests. You can use a fixtures by passing it as an argument to your unit test function:

async def test_jupyter_server_api(jp_fetch):
    # Send request to a temporary Jupyter Server Web Application
    response = await jp_fetch("api/spec.yml")

    # Confirm that the request is successful.
    assert response.code == 200

You can list the fixtures for a given plugin using the --fixtures argument from the pytest command line interface:

pytest --fixtures -p pytest_jupyter.jupyter_server

or by calling the pytest --fixtures where the plugin is listed in the pytest_plugins variable of a given test directory.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest_jupyter-0.7.0.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pytest_jupyter-0.7.0-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

Details for the file pytest_jupyter-0.7.0.tar.gz.

File metadata

  • Download URL: pytest_jupyter-0.7.0.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for pytest_jupyter-0.7.0.tar.gz
Algorithm Hash digest
SHA256 6403b7f6f5eaaa5a9faffd73d2ff1097106a7dc5c3204292212487fc9fb71843
MD5 25c534d8a7e9f060f5f7bc059ffe79c5
BLAKE2b-256 c02eac44c922356917725a97ed7d6ac784b17d4a64719f8be6e944d61bb2201f

See more details on using hashes here.

File details

Details for the file pytest_jupyter-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: pytest_jupyter-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 17.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for pytest_jupyter-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57c94bd20c4fbbcf97bedcbe91719fe2a662f99bf98b83810dba1192dc7c56e3
MD5 9e8cbb293b7b3eaec3f33a32f455ca1e
BLAKE2b-256 b8b317c558f1b0a45fabb6a0259f6178fd817cface6ca4b5b4dcb5cc2212a2a7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page