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 ウィジェットを使用してノートブック モードを選択する

ウィジェット を使用して、1 つのノートブックでテスト呼び出しと通常の呼び出しを区別できます。次のコードは、スクリーンショットに示す例を生成します。

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

最初の行は、[ モード ]ドロップダウンメニューを生成します。

ウィジェットは実行をカスタマイズします

テストコードと結果を非表示にする

テストコードと結果を非表示にするには、 セルのアクションメニューから 「コードを 非表示」または 「結果を非表示 」を選択します。結果が非表示になっている場合でもエラーが表示されます。

テストを自動的に実行するようにスケジュールする

テストを定期的かつ自動的に実行するには、 スケジュールされたノートブックを使用できます。 指定した Eメール アドレスに 通知 Eメール を送信するようにジョブを設定できます。

スケジュールされたノートブックテスト

ノートブックからテスト コードを分離する

%runまたは Databricks Git フォルダーを使用して、テストコードをノートブックとは別に保存できます。 %runを使用すると、テスト コードは、別のノートブックから呼び出す別のノートブックに組み込まれます。 Databricks Git フォルダーを使用すると、 テスト コードをノートブック以外のソース コード ファイルに保存できます。

このセクションでは、 %runおよび Databricks Git フォルダーを使用してテストコードをノートブックから分離する例をいくつか示します。

%run を使用する

次のスクリーンショットは、 %run を使用して別のノートブックからノートブックを実行する方法を示しています。 %runの使用の詳細については、「 %run を使用してノートブックをインポートする」を参照してください。例の生成に使用されるコードは、スクリーンショットの後に示されています。

テストコードの分離

この例で使用されているコードを次に示します。 このコードでは、ノートブックの 共有 コード ノートブックと共有 コード ノートブック テスト が同じワークスペース フォルダーにあることを前提としています。

共有コードノートブック:

def reverse(s):
  return s[::-1]

共有コードノートブックテスト:

1つのセルで:

%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 ターミナルを使用して、ローカル コンピューターの場合と同様に、ソース コード ファイルでテストを実行することもできます。

Git フォルダーの呼び出しのテスト

CI/CD スタイルのワークフローを設定する

Databricks Git フォルダー内のノートブックの場合、コミットごとにノートブック テストを実行するように構成することで、CI/CD スタイルのワークフローをセットアップできます。 「Databricks GitHub Actionsを参照してください。