15.12.2022 Views

Python Eficaz

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

A classe TestCase oferece métodos auxiliares para definir assertivas nos testes,

como, por exemplo, assertEqual, que verifica uma condição de igualdade,

assertTrue, que verifica expressões booleanas e assertRaises, que verifica se

alguma exceção que deveria ser elevada realmente o foi (consulte help(TestCase)

para mais informações). Podemos definir nossos próprios métodos auxiliares nas

subclasses de TestCase para garantir que os testes sejam mais legíveis –

assegure-se apenas de que os nomes de seus métodos não iniciem com a palavra

test.

Nota

Outra prática comum ao escrever testes é usar funções e classes falsas para

provocar certos comportamentos. Para esse fim, o Python 3 oferece o módulo

nativo unittest.mock, também disponível no Python 2 como um pacote externo

open source.

Às vezes, nossas classes TestCase precisam configurar o ambiente de testes antes

de rodar os métodos de teste. Para isso, podemos sobrepor com substitutos os

métodos setUp e tearDown. Esses métodos são chamados antes e depois de cada

método de testes para garantir que cada um dos testes rode em um ambiente

isolado (uma prática importante para criar testes como se deve). No exemplo a

seguir, definimos um TestCase que cria uma pasta temporária antes de cada teste

e a apaga depois que cada teste termina:

class MyTest(TestCase):

def setUp(self):

self.test_dir = TemporaryDirectory()

def tearDown(self):

self.test_dir.cleanup()

# Os métodos de teste começam aqui

# ...

Normalmente, agrupamos os testes que têm relação entre si em conjuntos e

definimos um TestCase para cada conjunto. Às vezes temos um TestCase para

cada função que tem muitos casos limítrofes. Outras vezes, um só TestCase

contém testes para todas as funções em um módulo. Também criamos um

TestCase para testar uma única classe e todos os seus métodos.

Quando os programas começam a ficar complicados, provavelmente serão

necessários testes adicionais para verificar as interações entre os módulos, pois

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!