Repolode
jpmorganchase

jpmorganchase/nbcelltests

为 JupyterLab 中按顺序执行的 Notebook 提供逐单元格测试的扩展与 Python 包。

Star
97
Fork
26
未关闭 Issue
42
最近提交
6天前

这是什么?

nbcelltests 用于为生产环境中的 Jupyter Notebook 编写测试,主要面向按从上到下顺序执行、用于生成报告的 Notebook。针对每个单元格,可以添加 mock 和断言,工具会生成一个 unittest 类,每个单元格对应一个测试方法,并包含之前所有单元格的累计测试,以还原 Notebook 的线性执行过程。

测试内容保存在单元格元数据中,可通过 nbcelltests 命令行在离线状态下对 .ipynb 文件运行,也可在 JupyterLab 浏览器中执行并查看 pytest-html 的结果。项目还提供类似 lint 的检查,包括单元格最大行数、每个 Notebook 的单元格数、函数和类数量,以及测试覆盖的单元格比例。

该工具适用于依赖包版本变化或非线性编辑导致报告无法生成的场景,可在此类问题出现前及时发现。它基于 nbval 构建,后者负责输出结果的回归比对。

核心功能

  • 01为每个单元格生成 unittest 测试方法,并累计包含前面单元格的测试
  • 02测试定义保存在 Notebook 的单元格元数据中
  • 03支持通过命令行对 .ipynb 文件运行测试
  • 04可在 JupyterLab 中运行测试并通过 pytest-html 查看结果
  • 05检查单元格行数、Notebook 单元格数量等结构限制

适用场景

  • 对使用 Papermill 等工具按顺序执行的报告类 Notebook 做单元测试
  • 在基于 Notebook 的报表流程中,检测依赖包升级后的问题
  • 在软件生命周期流程中对 Notebook 的代码规模进行约束

快速上手

  1. 1

    从 PyPI 安装 Python 包

    pip install nbcelltests
  2. 2

    为示例笔记本生成并运行测试

    nbcelltests test examples/Example.ipynb

使用前须知

  • JupyterLab 集成需要安装 Node.js,并且安装后需要重新构建 JupyterLab。
  • 在 JupyterLab 中,代码检查使用运行 Jupyter 的 Python 版本进行,因此 Python 2 笔记本可能出现误报的语法错误。

收录于专题

标签

常见问题

nbcelltests 是什么?
为 JupyterLab 中按顺序执行的 Notebook 提供逐单元格测试的扩展与 Python 包。 nbcelltests 用于为生产环境中的 Jupyter Notebook 编写测试,主要面向按从上到下顺序执行、用于生成报告的 Notebook。针对每个单元格,可以添加 mock 和断言,工具会生成一个 unittest 类,每个单元格对应一个测试方法,并包含之前所有单元格的累计测试,以还原 Notebook 的线性执行过程。
nbcelltests 可以免费使用吗?用的什么许可证?
nbcelltests 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
nbcelltests 还在维护吗?
活跃维护中。nbcelltests 最近一次提交是在 2026年11月1日。
nbcelltests 适合用来做什么?
对使用 Papermill 等工具按顺序执行的报告类 Notebook 做单元测试 在基于 Notebook 的报表流程中,检测依赖包升级后的问题 在软件生命周期流程中对 Notebook 的代码规模进行约束
nbcelltests 怎么安装和运行?
从 PyPI 安装 Python 包: pip install nbcelltests 为示例笔记本生成并运行测试: nbcelltests test examples/Example.ipynb
在哪里获取 nbcelltests?
源代码和安装说明在 GitHub 上:https://github.com/jpmorganchase/nbcelltests

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目