分享方式:


測試 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-notebookshared-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 資料夾中的程式碼,您可以呼叫測試,並直接從筆記本執行。

筆記本測試叫用

也可以使用網路終端機在原始程式碼檔案中執行測試,就像在本機電腦上一樣。

Git 資料夾測試叫用

設定 CI/CD 樣式工作流程

對於 Databricks Git 資料夾中的筆記本,可以將筆記本測試設定為在每次提交時執行。 請參閱 Databricks GitHub Actions