Python Brasil [10]

Tutorial "Testando com py.test e tox"

by Danilo J. S. Bellini .

Meta

Trilha: Tools & methodology
Nível da audiência: Intermediário
Idioma: Português
Estado: Aceita

Palestrantes

Danilo J. S. Bellini

Graduado em música e engenharia elétrica, além de mestre em ciência da computação, todos pela USP. Desenvolvedor da biblioteca AudioLazy para DSP em Python, além de outros projetos como o semáforo gráfico dose.py. Colaborou com código em muitos projetos open souce, incluindo o py.test.
Twitter: @@danilobellini

Descrição

Tutorial para o aprendizado sobre o uso prático do pacote py.test para realização de testes de diversos tipos. Tópicos: - Comportamento básico para coleta e execução de testes; - Testando exceções; - Testes parametrizados e seus usos com oráculos, testes aleatórios; - Cobertura de código com pytest-cov; - Testando apenas uma parte de uma suíte; - Integrando com doctests; - Criando fixtures personalizadas; - Mock/stub/fake/dummy com a fixture monkeypatch; - Testando warnings; - Usando tox para automatizar testes em múltiplos ambientes (e.g. Python 2 e 3); - Configurações (avançadas) para tempo de coleta e tempo de setup; - Usando skip, xfail e deseleção para testes que irão falhar; - Testes envolvendo arquivos temporários; O tutorial inclui uma breve discussão sobre o que pode ser testado, além de exemplos sobre comparação de ponto flutuante, aproximações e manutenção de resultados para testes que envolvam cálculo numérico ou dados científicos/multimídia. É necessário levar o computador com o Python instalado (2.7 ou 3.4, preferencialmente ambos), e com o pip (ou algo equivalente) disponível para instalação de pacotes. Pode-se instalar previamente os pacotes pytest, pytest-cov e tox. O tutorial é voltado para quem já sabe programar em Python. Embora não seja fundamental, é de grande ajuda ter o conhecimento prévio sobre assuntos como gerenciadores de contexto, exceções, decorators, orientação a objetos e arquivos setup.py. A meta deste tutorial é a utilização/realização prática de testes, sem enfatizar tópicos de "engenharia de software" referentes à importância/relevância da utilização de testes, ou mesmo quanto às suas classificações.