Databricks Notebook 테스트

이 페이지에서는 Databricks Notebook에서 직접 코드를 테스트할 때 유용한 몇 가지 기술을 간략하게 설명합니다. 이러한 방법을 개별적으로 사용하거나 함께 사용할 수 있습니다.

Databricks Notebook에서 함수 및 단위 테스트를 설정하고 구성하는 방법에 대한 자세한 연습은 Notebook에 대한 단위 테스트를 참조하세요.

많은 단위 테스트 라이브러리가 Notebook 내에서 바로 작동합니다. 예를 들어 기본 제공 Python unittest 패키지를 사용하여 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'

테스트 실패는 셀의 출력 영역에 표시됩니다.

단위 테스트 실패

Databricks 위젯을 사용하여 Notebook 모드 선택

위젯을 사용하여 단일 Notebook의 일반 호출과 테스트 호출을 구분할 수 있습니다. 다음 코드는 스크린샷에 표시된 예제를 생성합니다.

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

첫 번째 줄은 모드 드롭다운 메뉴를 생성합니다.

위젯 사용자 지정 실행

테스트 코드 및 결과 숨기기

테스트 코드와 결과를 숨기려면 셀 작업 메뉴에서 코드 숨기기 또는 결과 숨기기를 선택합니다. 결과가 숨겨져 있더라도 오류가 표시됩니다.

자동으로 실행되도록 테스트 예약

주기적으로 테스트를 자동으로 실행하려면 예약된 Notebook을 사용하면 됩니다. 지정한 이메일 주소로 알림 이메일을 보내도록 작업을 구성할 수 있습니다.

예약된 Notebook 테스트

Notebook에서 테스트 코드 구분

Databricks Git 폴더 또는 Databricks Git 폴더를 사용하여 %run 테스트 코드를 Notebook과 별도로 유지할 수 있습니다. %run을 사용하는 경우 테스트 코드는 다른 Notebook에서 호출하는 별도의 Notebook에 포함됩니다. Databricks Git 폴더를 사용하는 경우 테스트 코드를 Notebook이 아닌 소스 코드 파일에 유지할 수 있습니다.

이 섹션에서는 테스트 코드를 Notebook과 구분하기 위해 Databricks Git 폴더를 사용하는 %run 몇 가지 예를 보여 줍니다.

%run 사용

아래 스크린샷은 %run을 사용하여 다른 Notebook에서 Notebook을 실행하는 방법을 보여줍니다. %run을 사용하는 방법에 대한 자세한 내용은 %run을 사용하여 Notebook 가져오기를 참조하세요. 예제를 생성하는 데 사용되는 코드는 스크린샷 다음에 표시됩니다.

테스트 코드 분리

다음은 예제에서 사용되는 코드입니다. 이 코드는 notebooks shared-code-Notebookshared-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 폴더저장된 코드의 경우 테스트를 호출하고 Notebook에서 직접 실행할 수 있습니다.

Notebook 테스트 호출

로컬 컴퓨터에서와 마찬가지로 웹 터미널을 사용하여 소스 코드 파일에서 테스트를 실행할 수도 있습니다.

Git 폴더 테스트 호출

CI/CD 스타일 워크플로 설정

Databricks Git 폴더Notebook의 경우 각 커밋에 대해 실행되도록 Notebook 테스트를 구성하여 CI/CD 스타일 워크플로를 설정할 수 있습니다. Databricks GitHub Actions를 참조하세요.