测试 Databricks 笔记本
本页简要介绍了一些在直接在 Databricks 笔记本中测试代码时有用的技术。 可以单独使用这些方法,或将它们一起使用。
有关如何在 Databricks 笔记本中设置和组织函数和单元测试的详细演练,请参阅笔记本单元测试。
许多单元测试库直接在笔记本中工作。 例如,可使用内置的 Python unittest
包测试笔记本代码。
def reverse(s):
return s[::-1]
import unittest
class TestHelpers(unittest.TestCase):
def test_reverse(self):
self.assertEqual(reverse('abc'), 'cba')
r = unittest.main(argv=[''], verbosity=2, exit=False)
assert r.result.wasSuccessful(), 'Test failed; see logs above'
测试失败将显示在单元格的输出区域中。
使用 Databricks 小组件选择笔记本模式
可使用小组件在单个笔记本中将测试调用与正常调用区分开来。 以下代码可生成屏幕截图中显示的示例:
dbutils.widgets.dropdown("Mode", "Test", ["Test", "Normal"])
def reverse(s):
return s[::-1]
if dbutils.widgets.get('Mode') == 'Test':
assert reverse('abc') == 'cba'
print('Tests passed')
else:
print(reverse('desrever'))
第一行会生成“模式”下拉菜单:
隐藏测试代码和结果
若要隐藏测试代码和结果,请从单元格操作菜单中选择“隐藏代码”或“隐藏结果”。 即使隐藏了结果,也会显示错误。
安排测试自动运行
要定期和自动运行测试,可使用计划的笔记本。 可将作业配置为将通知电子邮件发送到指定的电子邮件地址。
将测试代码与笔记本分开
可以使用 %run
或 Databricks Git 文件夹将测试代码与笔记本分开。 使用 %run
时,测试代码包含在你从另一个笔记本调用的单独笔记本中。 使用 Databricks Git 文件夹时,可以将测试代码保留在非笔记本源代码文件中。
本部分演示了如何使用 %run
和 Databricks Git 文件夹将测试代码与笔记本分开的一些示例。
使用 %run
下面的屏幕截图显示了如何使用 %run
从另一个笔记本运行某个笔记本。 若要详细了解如何使用 %run
,请参阅使用 %run 导入笔记本。 用于生成示例的代码显示在屏幕截图的下方。
下面是此示例中使用的代码。 此代码假定笔记本 shared-code-notebook 和 shared-code-notebook-test 位于同一工作区文件夹中。
shared-code-notebook:
def reverse(s):
return s[::-1]
shared-code-notebook-test:
在一个单元格中:
%run ./shared-code-notebook
在随后的单元格中:
import unittest
class TestHelpers(unittest.TestCase):
def test_reverse(self):
self.assertEqual(reverse('abc'), 'cba')
r = unittest.main(argv=[''], verbosity=2, exit=False)
assert r.result.wasSuccessful(), 'Test failed; see logs above'
使用 Databricks Git 文件夹
对于存储在 Databricks Git 文件夹中的代码,可以直接从笔记本调用测试并运行它。
还可使用 Web 终端像在本地计算机上一样在源代码文件中运行测试。
设置 CI/CD 样式工作流
对于 Databricks Git 文件夹中的笔记本,可以通过将笔记本测试为在每个提交时运行来设置 CI/CD 样式工作流。 请参阅 Databricks GitHub Actions。