Databricks-notebooks testen
Op deze pagina worden enkele technieken beschreven die nuttig zijn bij het rechtstreeks testen van code in Databricks-notebooks. U kunt deze methoden afzonderlijk of samen gebruiken.
Zie voor een gedetailleerd overzicht van het instellen en organiseren van functies en eenheidstests in Databricks-notebooks Eenheidstests voor notebooks.
Veel moduletestbibliotheken werken rechtstreeks in het notebook. U kunt bijvoorbeeld het ingebouwde Python-pakket unittest
gebruiken om notebookcode te testen.
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'
Testfouten worden weergegeven in het uitvoergebied van de cel.
Databricks-widgets gebruiken om de notebookmodus te selecteren
U kunt widgets gebruiken om testvocations te onderscheiden van normale aanroepen in één notebook. De volgende code produceert het voorbeeld dat wordt weergegeven in de schermopname:
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'))
Met de eerste regel wordt het vervolgkeuzemenu Modus gegenereerd:
Testcode en resultaten verbergen
Als u testcode en resultaten wilt verbergen, selecteert u Code verbergen of Resultaat verbergen in het menu celacties. Fouten worden weergegeven, zelfs als de resultaten verborgen zijn.
Tests plannen die automatisch moeten worden uitgevoerd
Als u tests periodiek en automatisch wilt uitvoeren, kunt u geplande notebooks gebruiken. U kunt de taak configureren voor het verzenden van e-mailmeldingen naar een e-mailadres dat u opgeeft.
Testcode scheiden van het notebook
U kunt uw testcode gescheiden houden van uw notebook met behulp van %run
Of Databricks Git-mappen. Wanneer u gebruikmaakt %run
, wordt testcode opgenomen in een afzonderlijk notitieblok dat u vanuit een ander notitieblok aanroept. Wanneer u Databricks Git-mappen gebruikt, kunt u testcode bewaren in broncodebestanden die geen notebook zijn.
In deze sectie ziet u enkele voorbeelden van het gebruik van %run
en Databricks Git-mappen om uw testcode van het notebook te scheiden.
%run
gebruiken
In de onderstaande schermopname ziet u hoe %run
u een notebook uitvoert vanuit een ander notitieblok. Zie %run
te importeren voor meer informatie over het gebruik. De code die wordt gebruikt om de voorbeelden te genereren, wordt weergegeven na de schermopname.
Hier volgt de code die in het voorbeeld wordt gebruikt. In deze code wordt ervan uitgegaan dat de notebooks shared-code-notebook en shared-code-notebook-test zich in dezelfde werkruimtemap bevinden.
shared-code-notebook:
def reverse(s):
return s[::-1]
shared-code-notebook-test:
In één cel:
%run ./shared-code-notebook
In een volgende cel:
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-mappen gebruiken
Voor code die is opgeslagen in een Databricks Git-map, kunt u de test aanroepen en rechtstreeks vanuit een notebook uitvoeren.
U kunt ook een webterminal gebruiken om tests uit te voeren in broncodebestanden, net zoals op uw lokale computer.
Een CI/CD-werkstroom instellen
Voor notebooks in een Databricks Git-mapkunt u een CI/CD-stijlwerkstroom instellen door notebooktests te configureren om ze uit te voeren voor elke commit. Zie Databricks GitHub Actions.