共用方式為


測試 Databricks 筆記本

本頁簡要說明一些在 Databricks 記事本中直接測試程式碼時有用的技巧。 這些功能可以單獨使用,也可以一起使用。

如需如何在 Databricks 筆記本中 set 及組織函式和單元測試的詳細逐步解說,請參閱 筆記本單元測試

許多單元測試程式庫直接在筆記本內運作。 例如,您可以使用內建的 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 小工具進入 select 筆記本模式

可以使用小工具在單一筆記本中區分測試調用與正常調用。 下列程式碼會產生螢幕擷取畫面中顯示的範例:

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'))

第一行產生 [模式] 下拉式功能表:

小工具自訂執行

隱藏測試程式碼和結果

若要隱藏測試程式代碼和結果,請從 select選擇 隱藏程式代碼隱藏結果。 即使隱藏結果,錯誤也會顯示。

排程測試以自動執行

若要測試定期自動執行,可以使用排程的筆記本。 可以設定工作,將通知電子郵件傳送至指定的電子郵件地址。

排程的筆記本測試

分隔測試程式碼與筆記本

可以使用 %run 或 Databricks Git 資料夾來分隔測試程式碼與筆記本。 當您使用 %run 時,測試程式碼包含在一個單獨的筆記本中,您可以從另一個筆記本呼叫。 當您使用 Databricks Git 資料夾時,可以將測試程式碼保留在非筆記本原始程式碼檔案中

本節說明使用 %run 和 Databricks Git 資料夾分隔測試程式碼與筆記本的一些範例。

使用 %run

下列螢幕擷取畫面顯示如何使用 %run 從另一個筆記本執行筆記本。 如需如何使用 %run 的詳細資訊,請參閱使用 %run 匯入筆記本。 用來 generate 範例的程式代碼顯示在螢幕截圖之後。

分隔測試程式碼

以下是範例中使用的程式碼: 此程式碼假設筆記本 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 資料夾測試叫用

Set 建立 CI/CD 風格工作流程

針對 Databricks Git 資料夾中的筆記本,您可以藉由設定筆記本測試來針對每個認可執行,來 set CI/CD 樣式工作流程。 請參閱 Databricks GitHub Actions