Поделиться через


Тестирование записных книжек Databricks

На этой странице кратко описаны некоторые методы, которые полезны при тестировании кода непосредственно в записных книжках Databricks. Их можно использовать по отдельности или совместно.

Подробное пошаговое руководство по настройке и организации функций и модульных тестов в записных книжках Databricks см . в разделе Модульное тестирование записных книжек.

Многие библиотеки модульного тестирования работают непосредственно в записной книжке. Например, вы можете использовать встроенный пакет Python unittest для тестирования кода записной книжки.

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'

Ошибки теста отображаются в области выходных данных ячейки.

Сбой модульного теста

Использование мини-приложений Databricks для выбора режима записной книжки

Вы можете использовать мини-приложения для различения тестовых вызовов и обычных вызовов в одной записной книжке. Следующий код создает пример, показанный на снимке экрана:

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

Первая строка создает раскрывающееся меню режима :

Выполнение настройки мини-приложения

Скрытие тестового кода и результатов

Чтобы скрыть тестовый код и результаты, выберите "Скрыть код" или "Скрыть результат" в меню действий ячейки. Ошибки отображаются, даже если результаты скрыты.

Планирование автоматического выполнения тестов

Для периодического и автоматического тестирования можно использовать запланированные записные книжки. Задание можно настроить для отправки уведомлений на указанный вами адрес электронной почты .

Запланированная проверка записной книжки

Отделение кода теста от записной книжки

Тестовый код можно хранить отдельно от записной книжки с помощью %run папок Databricks Git. При использовании %runтестовый код включается в отдельную записную книжку, которую вы вызываете из другой записной книжки. При использовании папок Databricks Git можно хранить тестовый код в файлах исходного кода, отличных от записных книжек.

В этом разделе показаны некоторые примеры использования %run и папок Databricks Git для разделения тестового кода из записной книжки.

Использование %run

Снимок экрана ниже показано, как использовать %run для запуска записной книжки из другой записной книжки. Дополнительные сведения об использовании %runсм. в разделе %run для импорта записной книжки. Код, используемый для создания примеров, показан на снимках экрана.

Разделение кода проверки

Ниже приведен код, используемый в примере. В этом коде предполагается, что записные книжки shared-code-notebook и shared-code-notebook-test находятся в той же папке рабочей области.

shared-code-notebook:

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

shared-code-notebook-test:

В одной ячейке:

%run ./shared-code-notebook

В следующей ячейке:

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'

Использование папок Databricks Git

Для кода, хранящегося в папке Databricks Git, можно вызвать тест и запустить его непосредственно из записной книжки.

Вызов проверки записной книжки

Вы также можете использовать веб-терминал для выполнения тестов в файлах исходного кода так же, как и на локальном компьютере.

Тестирование вызовов папок Git

Настройка рабочего процесса в стиле CI/CD

Для записных книжек в папке Databricks Git можно настроить рабочий процесс в стиле CI/CD, настроив тесты записных книжек для выполнения каждой фиксации. См. страницу GitHub Actions для Databricks.