Partager via


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.

Échec de test unitaire

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 :

Exécution personnalisée de widget

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.

Test de notebook planifié

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.

Séparation du code de test

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.

Appel de test de 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.

Appels de test de dossiers Git

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.