メインコンテンツまでスキップ

Databricks ノートブックをテストする

このページでは、Databricks ノートブックでコードを直接テストする場合に役立ついくつかの手法について簡単に説明します。 これらの方法は、別々に使用することも、一緒に使用することもできます。

Databricks ノートブックで関数と単体テストを設定および整理する方法の詳細なチュートリアルについては、「 ノートブックの単体テスト」を参照してください。

多くの単体テスト ライブラリは、ノートブック内で直接動作します。 たとえば、組み込みの Python unittest パッケージを使用して、ノートブックのコードをテストできます。

Python
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 つのノートブックでテスト呼び出しと通常の呼び出しを区別できます。次のコードは、スクリーンショットに示されている例を生成します。

Python
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 ドロップダウン メニューを生成します。

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

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

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

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

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

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

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

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

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

使う %run

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

テストコードの分離

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

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

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

shared-code-ノートブック-test :

1つのセルに:

%run ./shared-code-notebook

後続のセルで、次の操作を行います。

Python
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フォルダ内のノートブックの場合、ノートブック tests をコミットごとに実行するように構成することで、CI/CDスタイルのワークフローを設定できます。Databricks GitHub Actionsを参照してください。