首页 > 解决方案 > 如何从笔记本或数据块上的命令行运行 pytest?

问题描述

我创建了一些类,每个类都将数据框作为参数。我已经导入了 pytest 并创建了一些固定装置和简单的断言方法。

我可以从笔记本调用 pytest.main([.]) ,它将从根目录(databricks/驱动程序)执行 pytest。

我试过传递笔记本路径,但它说找不到。

理想情况下,我想从命令行执行这个。

如何配置根目录?spark os 和我发现很难连接的用户工作区之间似乎存在脱节。

需要注意的是,我不想使用 unittest,因为我可以通过输出 AzureDevOps 可以报告的 junitxml 在 CI 管道中成功使用 pytest。

标签: pythonunit-testingpytestdatabricks

解决方案


我已经在本文底部的链接中解释了您无法在 Databricks 笔记本上运行 pytest 的原因(除非您将它们导出,并将它们作为常规 .py 文件上传到 dbfs,这不是您想要的)。

但是,我已经能够使用如下方法在 Databricks 中运行文档测试doctest.run_docstring_examples

import doctest

def f(x):
    """
    >>> f(1)
    45
    """
    return x + 1

doctest.run_docstring_examples(f, globals())

这将打印出:

**********************************************************************
File "/local_disk0/tmp/1580942556933-0/PythonShell.py", line 5, in NoName
Failed example:
    f(1)
Expected:
    45
Got:
    2

如果您还想引发异常,请进一步查看:https ://menzess.github.io/howto/test/code-in-databricks-notebooks/


推荐阅读