基本的笔记本检查。他们跑了吗?它们含有棉绒吗?
nbsmoke的Python项目详细描述
nbsmoke
基本的笔记本烟雾测试:他们运行正常吗?它们含有棉绒吗?
警告:概念的早期验证;工作正在进行中。用于 自担风险。
特别是,这个扩展应该作为 尽可能的,但还没有得到广泛的考验。
这个Pytest插件是用Cookiecutter和@hackebrot的Cookiecutter-pytest-plugin模板生成的。
安装
安装nbsmoke$ pip install nbsmoke
或者您可以通过conda从anaconda.org安装nbsmoke:
$ conda install -c pyviz/label/dev -c conda-forge nbsmoke
使用量
检查所有笔记本是否正常运行:
$ pytest --nbsmoke-run
检查所有笔记本是否运行正常,并存储HTML以供查看 之后:
$ pytest --nbsmoke-run --store-html=/scratch
绒布检查笔记本:
$ pytest --nbsmoke-lint
您可以指定一个列表,而不是目录中的所有文件,例如:
$ pytest --nbsmoke-run notebooks/Untitled*.ipynb
如果要将pytest限制为只运行笔记本测试,请使用-k,例如:
$ pytest --nbsmoke-run -k ".ipynb"
标准pytest'ini'提供了其他选项 setup.cfg、pytest.ini或tox.ini中的配置:
[pytest] # when running, seconds allowed per cell (see nbconvert timeout) nbsmoke_cell_timeout = 600 # notebooks to skip running; one case insensitive re to match per line nbsmoke_skip_run = ^.*skipme\.ipynb$ ^.*skipmetoo.*$ # case insensitive re to match for file to be considered notebook; # defaults to ``^.*\.ipynb`` it_is_nb_file = ^.*\.something$
nbsmoke支持# noqa注释来标记 应在lint检查期间忽略。
可以忽略项目配置中的nbsmoke_skip_run列表 传递--ignore-nbsmoke-skip-run(如果有时您希望 运行所有笔记本)。
有什么意义?
尽管可以对笔记本电脑进行更复杂的测试(例如 NBVAL),只是检查笔记本是否从头到尾运行 新内核(或中性ci服务)中的错误可能很有用 在开发过程中。几项工作的实践经验 有笔记本的项目证实了这一点,但这就是我 有
检查笔记本上的皮棉可能看起来微不足道/毫无意义,但是 经常发现未使用的名称(通常是未使用的导入)。它也是 很常见的python2vs3问题,有时未定义 名字-以一种比运行笔记本更快的方式 多个版本的python)。
未使用的导入/名称本身可能看起来微不足道,但它们可以 妨碍读者理解笔记本,或添加依赖项 这不是必需的。
在笔记本中使用# noqa: explanation可能看起来有点过头了, 但其目的至少是迫使“神秘进口”成为 澄清(如果它们是必要的,理想情况下它们不应该 是的)。如果你要进口一些副作用的东西, 告诉读者这一点很有帮助,丑陋/奇怪的# noqa应该有助于提醒您解决潜在的问题…
因为“pyflakes使 简单的承诺:它不会抱怨风格,它会尝试 很难从不发出误报。”
贡献
首先,使用pip install -e .安装。然后使用运行测试 tox或pytest -v tests/。
pypi和anaconda.org的新版本:git tag -a vX.Y.Z -m "Something about release" && git push --tags。
许可证
根据BSD-3许可证的条款分发,“nbsmoke” 是免费的开源软件。
问题
如果您遇到任何问题,请file an issue(理想情况下 包括任何有问题的笔记本的副本)。