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.
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 :
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.
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 %run
o , 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 %run
o , 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.
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.
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.
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.