JupyterLab的Cellbycell测试

jupyterlab-celltests的Python项目详细描述


jupyterlab_细胞测试

Jupyter实验室生产的Jupyter笔记本电脑的逐单元测试

Build StatusCoverageDocsPyPIPyPInpm

概述

Celltests是为线性执行的笔记本编写测试而设计的。它主要用于单元测试报告。在

“线性执行笔记本?”

当把笔记本电脑转换成html/pdf/email报告时,它们会被一次从上到下执行,并且被期望包含尽可能少的代码,主要集中在绘图和降价位上。这种类型的库包括PapermillJupyterLab Emails,等等

这不是已经存在了吗?

Nbval是一个很棒的产品,我建议将其用于笔记本回归测试。但它只允许测试意外失败或简单的输出相等测试。在

为什么我还要这个?

如果数据源出现故障,这并不一定对您有帮助,但您很可能会注意到这一点。有用的地方是:

  • 当系统中的环境(例如软件包版本)发生变化时
  • 当你在笔记本上玩的时候(例如非线性执行),但不确定你的报告是否还能生成
  • 当您的软件生命周期系统在处理笔记本电脑时遇到困难(除非集成nbdime/nbconvert到脚本,难以测试,难以确保今天有效的东西明天能正常工作,否则无法将其作为代码进行lint/audit)

那么这有什么用呢?

给定一个笔记本,您可以为单个单元格编写模拟和断言。然后,您可以为这个笔记本生成一个测试脚本,允许您将它挂接到您的测试系统中,从而为您的报告提供单元测试。在

编写测试

当您为一个单元编写测试时,我们在一个unittest类上创建一个新方法,该方法对应于您的单元格的索引,并包括所有以前单元格的累积测试(以模拟到目前为止在笔记本的线性执行中发生的情况)。您可以编写任何您喜欢的模拟和断言,并且可以调用%cell将单元的内容注入到测试中。 测试本身存储在单元元数据中,类似于celltag、幻灯片信息等

运行测试

您可以从.ipynb文件脱机运行测试,也可以从浏览器执行它们并查看pytest-html的html插件的结果。

额外测试

  • 每个单元的最大行数
  • 每个笔记本的最大单元格数
  • 每个笔记本的最大函数定义数
  • 每个笔记本的最大类定义数
  • 测试细胞百分比

示例

在提交的Untitled.ipynb笔记本中,但经过修改,使单元格0的import语句被复制了10次(以触发测试和lint失败):

测试

Untitled_test.py::TestExtension::test_cell0 PASSED                                                                                     [8%]
Untitled_test.py::TestExtension::test_cell1 PASSED                                                                                     [16%]
Untitled_test.py::TestExtension::test_cell2 PASSED                                                                                     [25%]
Untitled_test.py::TestExtension::test_cell3 PASSED                                                                                     [33%]
Untitled_test.py::TestExtension::test_cell_coverage PASSED                                                                             [41%]
Untitled_test.py::TestExtension::test_cells_per_notebook PASSED                                                                        [50%]
Untitled_test.py::TestExtension::test_class_definition_count PASSED                                                                    [58%]
Untitled_test.py::TestExtension::test_function_definition_count PASSED                                                                 [66%]
Untitled_test.py::TestExtension::test_lines_per_cell_0 FAILED                                                                          [75%]
Untitled_test.py::TestExtension::test_lines_per_cell_1 PASSED                                                                          [83%]
Untitled_test.py::TestExtension::test_lines_per_cell_2 PASSED                                                                          [91%]
Untitled_test.py::TestExtension::test_lines_per_cell_3 PASSED                                                                          [100%]

皮棉

^{pr2}$

注意:在jupyterlab中,笔记本将使用 运行jupyter实验室的python。一本打算成为 因此,使用Python2内核运行可能会产生语法错误 在检查皮棉时。在

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

推荐PyPI第三方库


热门话题
java结合两个Date实例使用Joda创建datetime   带有POI和FileOutputStream的java Swing应用程序性能问题   Java中是否存在类似于Python的异常?   Java中有界通配符的泛型   使用字符和子字符串的java不同输出   在Java中获取LDAP模式   java自定义类在自身上生成ClassNotFoundException   java连接到从internet到通过LAN连接到internet的系统的serversocket   java如何通过maven在jaxws中使用jaxb插件?   java Kerberos如何获取主体或客户端名称?   java应用服务器中是否有JDBC的单点登录解决方案?   java是存储矩阵值以便以后访问的更好方法   Java等级计算器。开始这门课我需要一些帮助   未找到Android“libc++\u shared.so”中的java OpenCV实现   当我使用web配置部署描述符时使用java。xml。它显示了错误   java为什么我的ArrayList的add方法冲突,如何编辑我的自定义add方法   java创建一个以集合为键的映射?   java如何将用户输入到数字三角形中   为什么Java在读取LinkedHashMap时会自动从字符串转换为整数   类动态创建和读取java类