Delen via


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.

Fout bij eenheidstest

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:

Widget aanpassen uitvoering

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.

Geplande notebooktest

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.

Testcode scheiden

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.

Aanroep voor notebooks testen

U kunt ook een webterminal gebruiken om tests uit te voeren in broncodebestanden, net zoals op uw lokale computer.

Git-mappen die aanroepen testen

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.