验证jupyter笔记本的py.test插件
nbval的Python项目详细描述
py.test验证jupyter笔记本的插件
该插件在py.test中添加了识别和收集jupyter的功能。
笔记本。测试的目的是确定是否执行
存储的输入与.ipynb
文件的存储输出匹配。同时
确保笔记本电脑正常运行。
这些测试旨在确保Jupyter笔记本电脑(尤其是 参考资料和文档)都在一致地执行。
每一个细胞都被作为一个测试,一个不能复制预期的细胞 输出将失败。
有关完整文档,请参见^{
安装
PYPI上提供:
pip install nbval
或者通过克隆存储库并运行安装最新版本:
pip install .
从主目录。要卸载:
pip uninstall nbval
工作原理
扩展查看了ipython笔记本中包含代码的每个单元格
然后py.test
系统比较存储在笔记本中的输出
当单元格被执行时输出。因此,笔记本本身就是
用作测试函数。
执行笔记本时的输出行可以通过
当调用py.test
命令时,额外的选项和文件。这个文件
是ConfigParser
库的常用配置文件。
关于执行,大致上,脚本启动
带shell
和
一个iopub
套接字。需要shell
来执行
笔记本(它向内核发送请求)和iopub
提供
从输出获取消息的接口。内容
从内核获得的消息中,有很多是在字典中组织的
不同的信息,比如处决的时间戳,
单元数据类型、单元类型、内核状态、用户名等。
一般来说,ipython笔记本系统的功能是 相当复杂,但对消息的详细解释 以及系统的工作原理,请参见此处
http://ipython.org/ipython-doc/stable/development/messaging.html
执行
要执行此插件,需要使用nbval
标志执行py.test
要将测试与常用的python文件区分开来,请执行以下操作:
py.test --nbval
您还可以指定--nbval-lax
,它运行笔记本并检查
错误,但仅将单元格的输出与#NBVAL_CHECK_OUTPUT
进行比较。
标记注释。
py.test --nbval-lax
上面的命令将执行当前文件夹中的所有.ipynb
文件和“pytest”测试。
如果只想执行笔记本,请指定-p no:python
。或者,您可以执行特定的笔记本:
py.test --nbval my_notebook.ipynb
如果要清理输出行,则需要一个额外的标志--sanitize-with
必须与带有正则表达式的配置文件的路径一起传递,
即
py.test --nbval my_notebook.ipynb --sanitize-with path/to/my_sanitize_file
其中my_sanitize_file
具有以下结构。
[Section1]
regex: [a-z]*
replace: abcd
regex: [1-9]*
replace: 0000
[Section2]
regex: foo
replace: bar
regex
选项包含将在输出中匹配的表达式,并且
replace
是将替换regex
匹配的字符串。目前,该科
名称在测试系统中没有任何意义或影响,它将
并替换相应的选项。
覆盖范围
要使用笔记本为导入的代码生成覆盖率,请使用pytest cov插件。 NBVAL应自动检测相关选项并使用它进行自我配置。
并行执行
nbval与用于并行运行测试的pytest xdist插件兼容。是的
但是需要使用--dist loadscope
标志来确保
笔记本在同一个内核上运行。
帮助
可以使用py.test -h
获得py.test
系统帮助,它将
显示可以传递给命令的所有标志,例如
详细-v
选项。ipython笔记本插件可以在
general
部分。
致谢
这个插件的灵感来自Andrea Zonca的py.test插件f或收集装置 ipython笔记本中的测试(https://github.com/zonca/pytest-ipynb)。
原始原型是基于
https://gist.github.com/timo/2621679和测试系统的代码
对于笔记本https://gist.github.com/minrk/2620735我们
与py.test
系统集成和混合。
我们感谢
OpenDreamKit地平线2020欧洲研究基础设施项目(676541),http://opendreamkit.org
Epsrc的下一代博士培训中心 计算模型,http://ngcm.soton.ac.uk(ep/l015382/1)和 EPSRC的复杂系统仿真博士培训中心 ((ep/g03690x/1),
戈登和贝蒂摩尔基金会通过格兰特GBMF 4856,由 阿尔弗雷德斯隆基金会和赫尔姆斯利信托基金会。
作者
2014年至2017年大卫·科尔特斯·奥图诺、奥利弗·拉斯莱特、T.克鲁弗、维达尔 弗于斯克、Maximilian Albert、米尔克、Ondrej Hovorka、Hans Fangohr