在Jupyter Notebook单元的输出上运行测试

标记

我正在使用Jupyter Notebook或Jupyter Lab教授Python基础知识。

是否可以在不抑制单元格输出的情况下对先前单元格的标准输出进行测试?

%%capture具有标准配置的魔术可以重定向标准输出。我希望能够在运行测试之前仍然看到单元的输出。

例如

[cell 1] >> print('Hello, world!')
Hello, world!

测试单元:

[cell 2] >>  if (cell1.stdout == 'Hello, world!'):
         ...    print('Success!')
         ... else:
         ...    print('Tests failed')
克拉索夫斯基

这非常简单,只需%%capture使用显示捕获的输出的自定义函数包装魔术即可:

from IPython.core import magic

@magic.register_cell_magic
def non_suppressing_capture(variable, cell):
    get_ipython().magics_manager.magics['cell']['capture'](variable, cell)
    globals()[variable].show()

并且(在执行上述代码之后)按如下方式使用它:

%%non_suppressing_capture cell1
print('Hello, world!')

实际上,除非您添加测试字符串的换行符,否则测试将失败:

if cell1.stdout == 'Hello, world!\n':
    print('Success!')
else:
    print('Tests failed')

IPython魔术是一个强大的工具。您可以在文档中找到更多高级示例,请参阅:定义自定义魔术章节和API文档:core.magiccore.magic_arguments

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章