Pytest plugin for testing Jupyter Notebooks
Project description
nbtest
A pytest plugin for testing Jupyter Notebooks
The nbtest-plugin adds the functionality to define tests (assertions) in Jupyter Notebooks for testing key properties.
These tests are later collected by pytest, when used with the --nbtest flag
Assertions supported
Generic assertions
- assert_equal
- assert_allclose
- assert_true
- assert_false
DataFrame-specific assertions
- assert_nanvar: Test the variance of the dataframe
- assert_nanmean: Test the mean of the dataframe
- assert_column_types: Test the data type of each column in the dataframe
- assert_column_names: Test the column names of each column in the dataframe
Usage example
Testing
import nbtest
import math
import numpy as np
nbtest.assert_equal(round(math.pi, 2), 3.14)
nbtest.assert_true(math.pi == 3)
print(f'PI: {math.pi}')
These tests do not report any errors when the notebook is executed
$ jupyter execute example.ipynb --output=run.ipynb
[NbClientApp] Executing example.ipynb
[NbClientApp] Executing notebook with kernel:
[NbClientApp] Save executed results to run.ipynb
And output of the cell is:
PI: 3.141592653589793
Now, we execute the tests using pytest
$ pytest -v --nbtest example/nbtest_plugin_example.ipynb
==================================================== test session starts =====================================================
platform linux -- Python 3.11.11, pytest-8.3.4, pluggy-1.5.0 -- /home/verve/miniconda3/envs/test/bin/python
cachedir: .pytest_cache
rootdir: /home/verve/ml_nb_testing/comp_analysis/nbtest-release
plugins: nbtest-0.1.0, anyio-4.6.2
collected 2 items
example/nbtest_plugin_example.ipynb::nbtest_id_0_5 PASSED [ 50%]
example/nbtest_plugin_example.ipynb::nbtest_id_0_6 FAILED [100%]
========================================================== FAILURES ==========================================================
________________________________________ example/nbtest_plugin_example.ipynb::Cell 0 _________________________________________
Assertion failed
Cell 0: Assertion error
Input:
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
Cell In[1], line 1
----> 1 nbtest.tc.assertTrue(math.pi == 3)
File ~/miniconda3/envs/test/lib/python3.11/unittest/case.py:715, in TestCase.assertTrue(self, expr, msg)
713 if not expr:
714 msg = self._formatMessage(msg, "%s is not true" % safe_repr(expr))
--> 715 raise self.failureException(msg)
AssertionError: False is not true
================================================== short test summary info ===================================================
FAILED example/nbtest_plugin_example.ipynb::nbtest_id_0_6
================================================ 1 failed, 1 passed in 1.34s =================================================
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nbtest_plugin-0.1.6.tar.gz.
File metadata
- Download URL: nbtest_plugin-0.1.6.tar.gz
- Upload date:
- Size: 11.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c462cddd3c7066626c2f94ff6f551119e54a3bb7be365774182f408bd3d4fa51
|
|
| MD5 |
634df2a4385fe6fb3684679a204d4373
|
|
| BLAKE2b-256 |
ac2f9e342b7e015ba7cab583b8118983cc2d6a50d781fea5f1125a780e2459fc
|
File details
Details for the file nbtest_plugin-0.1.6-py2.py3-none-any.whl.
File metadata
- Download URL: nbtest_plugin-0.1.6-py2.py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbe7ec85ff92bb3fbb98f31cc56597dad51d50d57ba53d9199c8b36556e75ec4
|
|
| MD5 |
390633b48838bcb8aa5958d482235f97
|
|
| BLAKE2b-256 |
10f9ee131483299296c6d19ccfa7924ce815dd540e308976dfc8f595764d23a0
|