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.
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:
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.
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.
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.
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.
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.