A set of pytest plugins for Jupyter libraries and extensions.
First, install pytest-jupyter from PyPI using pip:
pip install pytest-jupyterThis 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 == 200You can list the fixtures for a given plugin using the --fixtures argument from the pytest command line interface:
pytest --fixtures -p pytest_jupyter.jupyter_serveror by calling the pytest --fixtures where the plugin is listed in the pytest_plugins variable of a given test directory.