다음을 통해 공유


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에서 테스트 코드 구분

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

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

%run 사용

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

테스트 코드 분리

예제에 사용된 코드는 다음과 같습니다. 이 코드는 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 폴더에 있는 노트북의 경우, 각 커밋에 대해 노트북 테스트가 실행되도록 구성하여 CI/CD 스타일의 워크플로를 설정할 수 있습니다. Databricks GitHub Actions를 참조하세요.