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.
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à:
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.
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.
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.
È anche possibile usare il terminale Web per eseguire test nei file di codice sorgente esattamente come si farebbe nel computer locale.
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.