Condividi tramite


Testare i notebook di Databricks

Questa pagina descrive brevemente alcune tecniche utili per testare il codice direttamente nei notebook di Databricks. È possibile usare questi metodi separatamente o insieme.

Per una procedura dettagliata su come set e organizzare funzioni e unit test nei notebook di Databricks, vedere unit test per i notebook.

Molte librerie di testing unità funzionano direttamente all'interno del notebook. Ad esempio, è possibile usare il pacchetto unittest Python predefinito per testare il codice del notebook.

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'

Gli errori di test vengono visualizzati nell'area di output della cella.

Errore di unit test

Usare i widget di Databricks per la modalità notebook select

È possibile usare i widget per distinguere le chiamate di test dalle chiamate normali in un singolo notebook. Il seguente codice genera l'esempio illustrato nello screenshot:

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

La prima riga genera il menu a discesa Modalità:

Il widget personalizza l'esecuzione

Nascondere il codice di test e i risultati

Per nascondere il codice di test e i risultati, usa select"Nascondi codice" oppure "Nascondi risultato" dal menu azioni della cella . Gli errori vengono visualizzati anche se i risultati sono nascosti.

Programmare l'esecuzione automatica di test

Per eseguire i test periodicamente e automaticamente, è possibile usare i notebook pianificati. È possibile configurare il processo per inviare messaggi di posta elettronica di notifica a un indirizzo email specificato.

Test del notebook pianificato

Separare il codice di test dal notebook

È possibile separare il codice di test dal notebook usando %run o cartelle Git di Databricks. Quando si usa %run, il codice di test viene incluso in un notebook separato che viene chiamato da un altro notebook. Quando si usano cartelle Git di Databricks, è possibile mantenere il codice di test in file di codice sorgente non notebook.

Questa sezione mostra alcuni esempi di uso di %run e cartelle Git di Databricks per separare il codice di test dal notebook.

Utilizzare %run.

Lo screenshot seguente mostra come usare %run per eseguire un notebook da un altro notebook. Per altre informazioni sull'uso di %run, vedere Usare %run per importare un notebook. Il codice utilizzato per gli esempi generate è mostrato dopo lo screenshot.

Separazione del codice di test

Ecco il codice usato nell'esempio. Questo codice presuppone che i notebook shared-code-notebook e shared-code-notebook-test si trovino nella stessa cartella dell'area di lavoro.

shared-code-notebook:

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

shared-code-notebook-test:

In una cella:

%run ./shared-code-notebook

In una cella successiva:

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'

Utilizzare le cartelle Git di Databricks

Per il codice archiviato in una cartella Git di Databricks, è possibile chiamare il test ed eseguirlo direttamente da un notebook.

Chiamata di test del notebook

È anche possibile usare il terminale Web per eseguire test nei file di codice sorgente esattamente come si farebbe nel computer locale.

Chiamata di test delle cartelle Git

Set configurare un flusso di lavoro in stile CI/CD

Per i notebook in una cartella Git Databricks, è possibile set un flusso di lavoro in stile CI/CD configurando i test del notebook da eseguire per ogni commit. Vedere Databricks GitHub Actions.