验证jupyter笔记本的py.test插件

nbval的Python项目详细描述


py.test验证jupyter笔记本的插件

Build StatusPyPI VersionDocumentation Status

该插件在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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
amazon web services Java AWS s3:如何使用Md5预签名url设置和上载内容   twitter使用java从推文中排除一些单词   如何在GUI java中添加延迟时间   java程序,如何使用Outputstream发送两次消息   java为什么是javax。在将Yasson与JSONB一起使用时,Glassfish中的json需要作为依赖项吗?   如何从dist文件夹中读取文件   java如何获取与模式匹配的文件列表   java如何使用Intent从Android应用程序发送彩信?   java限制对Spring的依赖,同时又不丧失框架的功能   java是否将捕获异常报告给Firebase/Fabric等?   用jdbcjava实现mysql分页   给定URI的java注释检索   java是序列化/反序列化公共枚举的简单方法?   java如何使用jMockit模拟本机方法