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 set e organizar funções e testes de unidade em notebooks Databricks, consulte Testes de unidade para notebooks.

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 o modo de notebook select

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 de teste e os resultados, selectOcultar 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 generate 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

Set Configurar um fluxo de trabalho no estilo CI/CD

Para notebooks em uma pasta Git Databricks, você pode set um fluxo de trabalho no estilo CI/CD configurando testes de notebooks para serem executados a cada commit. Consulte Ações do GitHub do Databricks.