Tester les notebooks Databricks
Cette page décrit brièvement certaines techniques utiles lors du test du code directement dans les notebooks Databricks. Vous pouvez utiliser ces méthodes séparément ou ensemble.
Pour obtenir une procédure pas à pas détaillée de la configuration et de l’organisation des fonctions et des tests unitaires dans les notebooks Databricks, consultez Tests unitaires pour les notebooks.
De nombreuses bibliothèques de tests unitaires fonctionnent directement dans le notebook. Par exemple, vous pouvez utiliser le package Python intégré unittest
pour tester le code du 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'
Les échecs de test apparaissent dans la zone de sortie de la cellule.
Utiliser des widgets Databricks pour sélectionner le mode notebook
Vous pouvez utiliser des widgets pour distinguer les appels de test des appels normaux dans un même notebook. Le code suivant génère l’exemple illustré dans la capture d’écran :
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 première ligne génère le menu déroulant Mode :
Masquage de code de test et des résultats
Pour masquer le code de test et les résultats, sélectionnez Masquer le code ou Masquer le résultat dans le menu actions de cellule. Les erreurs s’affichent même si les résultats sont masqués.
Planifier l’exécution automatique des tests
Pour exécuter des tests régulièrement et automatiquement, vous pouvez utiliser des notebooks planifiés. Vous pouvez configurer le travail pour envoyer des e-mails de notification à une adresse e-mail que vous spécifiez.
Séparer le code de test du notebook
Vous pouvez séparer votre code de test de votre notebook à l’aide de %run
ou de dossiers Git Databricks. Lorsque vous utilisez %run
, le code de test est inclus dans un bloc-notes distinct que vous appelez à partir d’un autre bloc-notes. Lorsque vous utilisez des dossiers Git Databricks, vous pouvez conserver le code de test dans les fichiers de code source autres que les notebooks.
Cette section présente quelques exemples d’utilisation %run
et de dossiers Git Databricks pour séparer votre code de test du notebook.
Utilisez %run
.
La capture d’écran ci-dessous montre comment utiliser %run
pour exécuter un bloc-notes à partir d’un autre bloc-notes. Pour plus d’informations sur l’utilisation de %run
, consultez Utiliser %run pour importer un notebook. Le code utilisé pour générer les exemples s’affiche à la suite de la capture d’écran.
Voici le code utilisé dans l’exemple. Ce code suppose que les notebooks shared-code-notebook et shared-code-notebook-test se trouvent dans le même dossier de l’espace de travail.
shared-code-notebook :
def reverse(s):
return s[::-1]
shared-code-notebook-test :
Dans une cellule :
%run ./shared-code-notebook
Dans une cellule suivante :
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'
Utiliser les dossiers Git Databricks
Pour le code stocké dans un dossier Git Databricks, vous pouvez appeler le test et l’exécuter directement à partir d’un notebook.
Vous pouvez aussi utiliser le terminal web pour exécuter des tests dans des fichiers de code source exactement comme vous le feriez sur votre machine locale.
Configurer un workflow de style CI/CD
Pour les notebooks d’un dossier Git Databricks, vous pouvez configurer un workflow de style CI/CD en configurant des tests de notebook à exécuter pour chaque validation. Consultez Databricks GitHub Actions.