运行 jupyter notebook 中的 pytest 测试函数

Running pytest test functions inside a jupyter notebook

我正在做一个关于 python 测试选项的演示,我想演示的技术之一是 pytest。我打算用 jupyter/ipython 笔记本做演示。理想情况下,我希望能够在单元格中定义一个测试函数,然后使用 pytest 来 运行 只是那个函数;这样我就可以演示 pytest 等的各个功能

有现成的方法吗? None 我在 pytest api 中看到的交互功能似乎符合要求,但我肯定不是 pytest 专家。我很乐意编写一个插件来执行此操作,因此任何有关该方向最佳方法的建议都会很棒。

我确实看到了 pytest-ipynb,但它似乎不能满足我的需要。如果该评估是错误的,关于如何使用它的建议也很好。

我创建了 ipython_pytest for this purpose and used it in my PyCon Helsinki 2016 presentation

您将像这样使用该工具:

%%pytest

def test_my_stuff():
    assert 42 == 42

不幸的是,我找不到使笔记本中定义的函数和 类 可用于在测试单元中测试函数的方法。如果有人为此提出解决方案,我将不胜感激。

有一个类似的模块,看起来很成熟:https://github.com/chmp/ipytest

在@akaiola开发的模块中被引用,比较活跃,定期更新/维护。

这是来自 Github 存储库 (https://github.com/chmp/ipytest/blob/master/Example.ipynb)

的示例

还有我最近创建的另一个

这是我的 2 美分,因为我已经为自己解决了这个问题 2 次,并且两次都回到了这个网站。为了未来的自己:

对于按以下方式构建的项目

prod_folder:
* data
* code
    * run_notebook.ipynb
* tests
   * test_some_test.py

如果你想 运行 pytestrun_notebook.ipynb 下面的 cell-magic 工作出于我的目的:

!pytest ../tests