Partilhar via


Testar notebooks Databricks

Esta página descreve brevemente algumas técnicas que são úteis ao testar o código diretamente em blocos de anotações Databricks. Você pode usar esses métodos separadamente ou juntos.

Para obter um passo a passo detalhado de como configurar e organizar funções e testes de unidade em blocos de anotações Databricks, consulte Teste de unidade para blocos de anotações.

Muitas bibliotecas de teste de unidade funcionam diretamente no bloco de anotações. Por exemplo, você pode usar o pacote Python unittest interno para testar o código do bloco de anotações.

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'

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

Falha no teste unitário

Usar widgets Databricks para selecionar o modo de bloco de anotações

Você pode usar widgets para distinguir invocações de teste de invocações normais em um único bloco de anotações. O código a seguir 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 :

Widget personalizar a execução

Ocultar código de teste e resultados

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 são exibidos mesmo se os resultados estiverem ocultos.

Agendar testes para serem executados automaticamente

Para executar testes periodicamente e automaticamente, você pode usar blocos de anotações agendados. Você pode configurar o trabalho para enviar e-mails de notificação para um endereço de e-mail que você especificar.

Teste de notebook agendado

Separe o código de teste do bloco de anotações

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

Esta seção mostra alguns exemplos de uso %run e pastas Databricks Git para separar seu código de teste do bloco de anotações.

Utilizar o comando %run

A captura de tela abaixo mostra como usar %run para executar um bloco de anotações a partir de outro bloco de anotações. Para obter mais informações sobre como usar %runo , consulte Usar %run para importar um bloco de anotações. O código usado para gerar os exemplos é mostrado após a captura de tela.

Separando o código de teste

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

Bloco de anotações de código compartilhado:

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

shared-code-notebook-test:

Numa célula:

%run ./shared-code-notebook

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

Usar pastas Git Databricks

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

Invocação de teste de notebook

Você também pode usar o terminal da Web para executar testes em arquivos de código-fonte, assim como faria em sua máquina local.

Pastas Git testando invocação

Configurar um fluxo de trabalho no estilo CI/CD

Para blocos de anotações em uma pasta Databricks Git, você pode configurar um fluxo de trabalho no estilo CI/CD configurando testes de bloco de anotações para serem executados para cada confirmação. Consulte Ações do GitHub do Databricks.