Udostępnij za pośrednictwem


Testowanie notesów usługi Databricks

Na tej stronie krótko opisano niektóre techniki przydatne podczas testowania kodu bezpośrednio w notesach usługi Databricks. Można użyć tych metod oddzielnie lub razem.

Aby zapoznać się ze szczegółowym przewodnikiem konfigurowania i organizowania funkcji i testów jednostkowych w notesach usługi Databricks, zobacz Testowanie jednostkowe notesów.

Wiele bibliotek testów jednostkowych działa bezpośrednio w notesie. Na przykład możesz użyć wbudowanego pakietu języka Python unittest do testowania kodu notesu.

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'

Błędy testów są wyświetlane w obszarze danych wyjściowych komórki.

Niepowodzenie testu jednostkowego

Wybieranie trybu notesu za pomocą widżetów usługi Databricks

Widżety umożliwiają odróżnienie wywołań testowych od normalnych wywołań w jednym notesie. Poniższy kod tworzy przykład pokazany na zrzucie ekranu:

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

Pierwszy wiersz generuje menu rozwijane Tryb :

Dostosowywanie wykonywania widżetu

Ukryj kod testowy i wyniki

Aby ukryć kod testowy i wyniki, wybierz pozycję Ukryj kod lub Ukryj wynik z menu akcji komórki. Błędy są wyświetlane nawet wtedy, gdy wyniki są ukryte.

Planowanie testów do automatycznego uruchamiania

Aby okresowo i automatycznie uruchamiać testy, możesz użyć zaplanowanych notesów. Zadanie można skonfigurować tak, aby wysyłało wiadomości e-mail z powiadomieniami na określony adres e-mail.

Test zaplanowanego notesu

Oddzielanie kodu testowego od notesu

Kod testowy można zachować oddzielnie od notesu przy użyciu %run folderów Git usługi Databricks. W przypadku korzystania z %runprogramu kod testowy jest dołączany do oddzielnego notesu wywoływanego z innego notesu. W przypadku korzystania z folderów Git usługi Databricks można zachować kod testowy w plikach kodu źródłowego spoza notesu.

W tej sekcji przedstawiono kilka przykładów użycia %run folderów Git i Databricks w celu oddzielenia kodu testowego od notesu.

Korzystanie z polecenia %run

Poniższy zrzut ekranu przedstawia sposób uruchamiania %run notesu z innego notesu. Aby uzyskać więcej informacji na temat korzystania z programu %run, zobacz Używanie narzędzia %run do importowania notesu. Kod używany do generowania przykładów jest wyświetlany na zrzucie ekranu.

Oddzielanie kodu testowego

Oto kod używany w przykładzie. W tym kodzie przyjęto założenie, że notesy shared-code-notebook i shared-code-notebook-test znajdują się w tym samym folderze obszaru roboczego.

shared-code-notebook:

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

shared-code-notebook-test:

W jednej komórce:

%run ./shared-code-notebook

W kolejnej komórce:

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'

Korzystanie z folderów Git usługi Databricks

W przypadku kodu przechowywanego w folderze Git usługi Databricks można wywołać test i uruchomić go bezpośrednio z notesu.

Wywołanie testowania notesu

Za pomocą terminalu internetowego można również uruchamiać testy w plikach kodu źródłowego tak samo jak na komputerze lokalnym.

Wywołanie testowania folderów git

Konfigurowanie przepływu pracy w stylu ciągłej integracji/ciągłego wdrażania

W przypadku notesów w folderze Git usługi Databricks można skonfigurować przepływ pracy w stylu ciągłej integracji/ciągłego wdrażania, konfigurując testy notesu do uruchamiania dla każdego zatwierdzenia. Zobacz Databricks GitHub Actions.