次の方法で共有


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

最初の行では、[Mode] (モード) ドロップダウン メニューが生成されます。

ウィジェットのカスタマイズ実行

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

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

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

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

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

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

%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:

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 に関する記事を参照してください。