gpt4 book ai didi

python - pytest - 在执行期间更改 Jupyter 笔记本单元格中的变量值

转载 作者:行者123 更新时间:2023-12-04 08:53:41 24 4
gpt4 key购买 nike

我们计划向我们的 Jupyter 笔记本添加一个集成测试,以通过使用 pytest 来验证它们是否可以端到端运行。和 nbval插入。
我们希望拥有的一个功能是参数化笔记本执行的能力,以便我们可以在 Jupyter 笔记本单元中尝试不同的变量值,并有效地测试同一笔记本的多个场景。
例如。

foo = 1
print(foo)
我们希望能够将任何值(如 1、2、3、100、900 等)分配给 foo 并查看执行的输出。本质上是这样的: <EXECUTE_NOTEBOOK> -p foo=2 <EXECUTE_NOTEBOOK> -p foo=3 <EXECUTE_NOTEBOOK> -p foo=4 <EXECUTE_NOTEBOOK> -p foo=100 <EXECUTE_NOTEBOOK> -p foo=900并查看不同的输出。
我们知道造纸厂已经支持这样的东西: https://papermill.readthedocs.io/en/latest/usage-execute.html#execute-via-the-python-api
pytest 也有这样的功能吗?

最佳答案

您可以选择 Papermill 作为一种选择,但是您也可以尝试在 notebook 内部对您的测试进行参数化,以避免将每个参数集作为单独的测试运行(如上例所示)。一种方法是使用 ipytest库,类似于 nbval ,但在我看来更直接一点( here is the example notebook )。
如果您基本上有一个想要操作的输入值,然后它将决定整个笔记本的输出,那么您可以做的一个想法是:

  • 最后将notebook中的所有其他功能/步骤包装成一个功能
  • 使用细胞魔法%%run_pytest[clean]以便 ipython知道运行这个单元
  • @pytest.mark.parametrize 装饰它传递要测试的值

  • 这样,您的整个笔记本将根据传递给此函数的参数重新运行几次。

    关于python - pytest - 在执行期间更改 Jupyter 笔记本单元格中的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63962231/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com