Testa Databricks-notebook-filer

Den här sidan beskriver kortfattat några tekniker som är användbara när du testar kod direkt i Databricks-notebook-filer. Du kan använda dessa metoder separat eller tillsammans.

En detaljerad genomgång av hur du konfigurerar och organiserar funktioner och enhetstester i Databricks-notebook-filer finns i Enhetstestning för notebook-filer.

Många enhetstestbibliotek fungerar direkt i notebook-filen. Du kan till exempel använda det inbyggda Python-paketet unittest för att testa notebook-kod.

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'

Testfel visas i cellens utdataområde.

Fel vid enhetstest

Använda Databricks-widgetar för att välja notebook-läge

Du kan använda widgetar för att skilja testanrop från vanliga anrop i en enda notebook-fil. Följande kod genererar exemplet som visas på skärmbilden:

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

Den första raden genererar den nedrullningsbara menyn Läge :

Anpassa körning av widget

Dölj testkod och resultat

Om du vill dölja testkod och resultat väljer du Dölj kod eller Dölj resultat från menyn cellåtgärder. Fel visas även om resultaten är dolda.

Schemalägga tester som ska köras automatiskt

Om du vill köra tester regelbundet och automatiskt kan du använda schemalagda notebook-filer. Du kan konfigurera jobbet för att skicka e-postmeddelanden till en e-postadress som du anger.

Schemalagt notebook-test

Separera testkoden från notebook-filen

Du kan hålla testkoden separat från din notebook-fil med hjälp av antingen %run Eller Databricks Git-mappar. När du använder %runingår testkoden i en separat notebook-fil som du anropar från en annan notebook-fil. När du använder Databricks Git-mappar kan du behålla testkoden i källkodsfiler som inte är notebook-filer.

Det här avsnittet visar några exempel på hur du använder %run Och Databricks Git-mappar för att separera testkoden från notebook-filen.

Använda %run

Skärmbilden nedan visar hur du använder %run för att köra en notebook-fil från en annan notebook-fil. Mer information om hur du använder finns i %runAnvända %run för att importera en notebook-fil. Den kod som används för att generera exemplen visas efter skärmbilden.

Separera testkod

Här är koden som används i exemplet. Den här koden förutsätter att notebook-filerna shared-code-notebook och shared-code-notebook-test finns i samma arbetsytemapp.

shared-code-notebook:

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

shared-code-notebook-test:

I en cell:

%run ./shared-code-notebook

I en efterföljande cell:

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'

Använda Databricks Git-mappar

För kod som lagras i en Databricks Git-mapp kan du anropa testet och köra det direkt från en notebook-fil.

Anrop för notebook-testning

Du kan också använda webbterminalen för att köra tester i källkodsfiler precis som på den lokala datorn.

Testa anrop för Git-mappar

Konfigurera ett CI/CD-formatarbetsflöde

För notebook-filer i en Databricks Git-mapp kan du konfigurera ett CI/CD-arbetsflöde genom att konfigurera notebook-tester som ska köras för varje incheckning. Se Databricks GitHub Actions.