Compartilhar via


Testar notebooks do Databricks

Esta página descreve brevemente algumas técnicas que são úteis ao testar código diretamente em notebooks do Databricks. Você pode usar esses métodos separadamente ou em conjunto.

Para ver um passo a passo detalhado de como configurar e organizar funções e testes de unidade em notebooks do Databricks, veja Teste de unidade para notebooks.

Muitas bibliotecas de teste de unidade funcionam diretamente no notebook. Por exemplo, você pode usar o pacote interno do Python unittest para testar o código do 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'

Falhas de teste aparecem na área de saída da célula.

Falha no teste da unidade

Usar widgets do Databricks para selecionar o modo de notebook

Você pode usar widgets para distinguir invocações de teste de invocações normais em um determinado notebook. O seguinte código produz o exemplo mostrado na captura de tela:

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

A primeira linha gera o menu suspenso Modo:

Execução de personalização de widget

Ocultar o código e os resultados do teste

Para ocultar o código e os resultados do teste, selecione Ocultar Código ou Ocultar Resultado no menu de ações da célula. Os erros serão exibidos mesmo que os resultados estejam ocultos.

Agendar testes para serem executados automaticamente

Para executar testes periodicamente e automaticamente, você pode usar notebooks agendados. Você pode configurar o trabalho para enviar emails de notificação para um endereço de email que você especificar.

Teste de notebook agendado

Separar o código de teste do notebook

Você pode manter seu código de teste separado do seu notebook usando as pastas %run ou Databricks Git. Quando você usa %run, o código de teste é incluído em um notebook separado que você chama usando outro notebook. Ao usar pastas Databricks Git, você pode manter o código de teste em arquivos de código-fonte que não sejam de notebook.

Essa seção mostra alguns exemplos de uso de pastas %run e Databricks Git para separar seu código de teste do notebook.

Use %run.

A captura de tela abaixo mostra como usar %run para executar um notebook por meio de outro notebook. Para obter mais informações sobre como usar %run, confira Usar %run para importar um notebook. O código utilizado para gerar os exemplos é mostrado após a captura de tela.

Código de teste de separação

Aqui está o código que foi usado no exemplo. Esse código pressupõe que os notebooks shared-code-notebook e shared-code-notebook-test estejam na mesma pasta do espaço de trabalho.

shared-code-notebook:

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

shared-code-notebook-test:

Em uma célula:

%run ./shared-code-notebook

Em uma célula subsequente:

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'

Use pastas Git do Databricks

Para código armazenado em uma pasta Databricks Git, você pode chamar o teste e executá-lo diretamente de um notebook.

Invocação de testes de notebook

Você também pode usar o terminal da Web para executar testes em arquivos de código-fonte da mesma forma que faria no computador local.

Invocação de teste de pastas Git

Configurar um fluxo de trabalho no estilo CI/CD

Para notebooks em uma pasta Databricks Git, você pode configurar um fluxo de trabalho estilo CI/CD configurando testes de notebook para serem executados para cada commit. Veja GitHub Actions no Databricks.