Testando o código

3. Testando o código#

Fonte dos vídeos

Todos os vídeos são da própria autora do livro original.

É super prático e divertido brincar com o código para processar dados em um arquivo Jupyter Notebook .ipynb, mas para tornar seu código escalável, sugere-se quebrá-lo em funções e classes. Quando você usa scripts .py ao invés de notebooks ipynb seu código pode quebrar por causa de algumas funções. E mesmo se não quebrar, como você saberá se as suas funções se comportam como você espera?

Por exemplo, criamos a função para extrair o sentimento de um texto com a TextBlob, uma biblioteca Python para processamento de dados textuais. Nós gostaríamos de garantir que ela funciona como o esperado: que a função retorne um valor maior que 0 quando o texto for positivo, e que retorne um valor menor que 0 quando o texto for negativo.

from textblob import TextBlob

def extract_sentiment(text: str):
        '''Extrai um sentimento usando textblob. 
        Polaridade está no intervalo [-1, 1]'''

        text = TextBlob(text)

        return text.sentiment.polarity

Para testar se a função retornará sempre o mesmo valor todas as vezes, a melhor forma é submeter a função a vários exemplos para ver se ela reproduz os resultados que desejamos. É quando os testes unitários demonstram sua importância.

De forma geral, devemos usar testes unitários em nossos projetos de ciência de dados porque ele permite:

  • Ter a certeza de que o código funciona conforme esperado;

  • Garantir que o código funcione como o esperado;

  • Detectar casos extremos;

  • Sentir confiança para mergulhar no código sem medo de quebrar o pipeline inteiro;

  • Seus colegas conseguem entender sua função simplesmente olhando seus respectivos testes.

Neste capítulo, vamos aprender como testar o nosso código com Pytest.