starfish_data_ai / tests /test_notebooks.py
John-Jiang's picture
init commit
5301c48
"""
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