starfish_data_ai / tests /test_notebooks.py
John-Jiang's picture
init commit
5301c48
raw
history blame
1.49 kB
"""
Helper module to discover and run test notebooks with pytest.
This module is optional. If you want to run notebook tests directly, you can use:
pytest path/to/notebook.ipynb
"""
import os
import pytest
from pathlib import Path
def get_notebooks(base_dir=None):
"""Find all test notebooks in the project directory."""
if base_dir is None:
base_dir = Path(__file__).parent
else:
base_dir = Path(base_dir)
notebooks = []
for nb_path in base_dir.rglob("*.ipynb"):
# Skip checkpoints
if ".ipynb_checkpoints" in str(nb_path):
continue
# Skip specific notebook
if "data_factory.ipynb" in str(nb_path):
continue
# Only include notebooks that follow test naming convention
if nb_path.name.startswith("test_"):
notebooks.append(str(nb_path))
return notebooks
@pytest.mark.notebook
@pytest.mark.parametrize("notebook_file", get_notebooks())
def test_notebook_execution(notebook_file):
"""Run the notebook through pytest to verify it executes without errors."""
pytest.importorskip("nbval")
if "data_factory.ipynb" in notebook_file:
pytest.skip("Skipping data_factory.ipynb as it is excluded from testing")
# This test will be collected by pytest
# We just need to ensure the file exists
assert os.path.exists(notebook_file), f"Notebook file not found: {notebook_file}"
# The actual testing of the notebook is handled by nbval