在jupyter笔记本中运行pytest测试函数

时间:2016-12-23 15:48:31

标签: python jupyter-notebook pytest jupyter

我正在撰写有关python测试选项的演示文稿,我想要演示的技术之一是pytest。我打算用jupyter / ipython笔记本做演示。理想情况下,我希望能够在单元格中定义测试函数,然后使用pytest运行该函数;这样我就可以展示pytest等的个性化特征。

有现成的方法吗?我在pytest api中看到的所有交互功能似乎都不符合要求,但我当然不是pytest专家。我很乐意写一个插件来做这个,所以关于这个方向的最佳方法的任何建议都会很棒。

我确实看到了pytest-ipynb,但它似乎没有做我需要的东西。如果评估错误,那么如何使用它的建议也会很好。

3 个答案:

答案 0 :(得分:10)

我为此创建了ipython_pytest并在my PyCon Helsinki 2016 presentation中使用了它。

你可以使用这样的工具:

%%pytest

def test_my_stuff():
    assert 42 == 42

不幸的是,我找不到一种方法来使笔记本中定义的函数和类可用于测试单元中的测试函数。如果有人想出一个解决方案,我会很感激。

答案 1 :(得分:5)

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

在@akaiola开发的模块中引用了它,看起来更加活跃。

我不是亲自使用Jupyter,因此我自己尚未对其进行测试,但这看起来是一个不错的解决方案。

以下是Github存储库(https://github.com/chmp/ipytest/blob/master/Example.ipynb)中的示例

Jupyter Notebook with iPytest

答案 2 :(得分:1)

在这里我付了2美分,因为我已经为自己解决了2倍这个问题,而且两次都回到了这个站点。为了我未来的自己:

对于以以下方式构造的项目

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

如果您想从 run_notebook.ipynb 中运行 pytest ,以下单元格魔术可以满足我的需求:

!pytest ../tests