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.
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 :
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.
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 %run
ingå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 %run
Använda %run för att importera en notebook-fil. Den kod som används för att generera exemplen visas efter skärmbilden.
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.
Du kan också använda webbterminalen för att köra tester i källkodsfiler precis som på den lokala datorn.
Konfigurera ett CI/CD-formatarbetsflöde
För notebooks i en Databricks Git-mappkan du sätta upp ett arbetsflöde i CI/CD-stil genom att konfigurera notebook-tester så att de körs för varje commit. Se Databricks GitHub Actions.