Pular para o conteúdo principal

Teste Databricks Notebook

Você pode testar código diretamente em notebooks Databricks usando bibliotecas integradas como unittest, widgets para alternar entre execuções de teste e normais e Jobs agendados. Use estas técnicas separadamente ou em conjunto.

Para um guia detalhado sobre como configurar e organizar funções e testes de unidade em notebooks do Databricks, consulte Teste de unidade para notebooks do Databricks.

Muitas bibliotecas de teste de unidade funcionam diretamente no Notebook. Por exemplo, o senhor pode usar o pacote integrado Python unittest para testar o código do Notebook.

Python
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 de unidade

Use os widgets do site Databricks para selecionar o modo Notebook​

O senhor pode usar widgets para distinguir as invocações de teste das invocações normais em um único Notebook. O código a seguir produz o exemplo mostrado na captura de tela:

Python
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 Mode :

Execução personalizada do widget

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.

programar testes para execução automática​

Para executar testes periódica e automaticamente, o senhor pode usar o Notebook agendado. É possível configurar o Job para enviar um e-mail de notificação para um endereço email que o senhor especificar.

Teste agendado do Notebook

Separe o código de teste do Notebook​

O senhor pode manter o código de teste separado do Notebook usando as pastas %run ou Databricks Git . Quando se usa %run, o código de teste é incluído em um Notebook separado que é chamado de outro Notebook. Ao usar as pastas Databricks Git , o senhor pode manter o código de teste em arquivos de código-fonte que não sejam do Notebook.

Esta seção mostra alguns exemplos de uso das pastas %run e Databricks Git para separar o código de teste do Notebook.

Uso %run​

A captura de tela abaixo mostra como usar o site %run para executar um Notebook a partir de outro Notebook. Para obter mais informações sobre o uso do site %run, consulte Use %run to import a Notebook. O código usado para gerar os exemplos é mostrado após a captura de tela.

Código de teste inicial

Separando o código de teste

Aqui está o código usado no exemplo. Este código pressupõe que o Notebook shared-code-Notebook e o shared-code-Notebook-test estejam na mesma pasta workspace.

Notebook de código compartilhado :

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

código compartilhado - teste de notebook :

Em uma célula:

Python
%run ./shared-code-notebook

Em uma célula subsequente:

Python
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 as pastas Git da Databricks​

Para o código armazenado em uma pastaDatabricks Git, o senhor pode chamar o teste e executá-lo diretamente de um Notebook.

Notebook invocação de teste

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

Invocação de teste das pastas Git

Configurar um fluxo de trabalho no estilo CI/CD​

Para o Notebook em uma pastaDatabricks Git, o senhor pode definir um fluxo de trabalho no estilo CI/CDconfigurando os testes do Notebook para execução em cada commit. Veja Databricks GitHub Actions.