PyUnit. O que é? Framework de teste baseado no JUnit Versão atual 1.4.1.

Post on 17-Apr-2015

148 views 0 download

Transcript of PyUnit. O que é? Framework de teste baseado no JUnit Versão atual 1.4.1.

PyUnit

O que é?

Framework de teste baseado no JUnit Versão atual 1.4.1

Download

Última versão: http://prdownloads.sourceforge.net/pyunit/pyunit-1.4.1.zip

Para versões do Python acima do 2.1 já está embutido

Usando o PyUnit

A classe chave é a TestCase do módulo unittest

Toda e qualquer classe de Teste deve estender ela

Exemplo de uma classe de teste

Usando o PyUnit

Da mesma forma que no JUnit podemos definir métodos setUp e tearDown

setUp e tearDown

Suíte de Testes

Várias são as formas: Criando as classes com nomes no

construtor Criando uma suíte genérica e

adicionando os testes Usando a função map

Suíte de Testes

Não criar uma suíte e usar o prefixo test antes de cada método para rodar no Eclipse

Melhor Solução: Criar um padrão para o nome dos métodos e usar o makesuite ]. Assim garantimos flexibilidade

Suíte de Testes

Assertions

Tipicamente usa-se o assert típico do Python

class WidgetTestCase(unittest.TestCase): def testDefaultSize(self): """Check that widgets are created with correct default size""" assert self.widget.size() == (50,50), 'incorrect default size'

Assertions

Problema: Se for necessário rodar o Python com otimização ligada os asserts típicos são pulados

Solução: Usar os métodos do PyUnit

Assertions

Outras formas de testar condições booleanas: Falha com condições verdadeiras

def runTest(self): self.failIf(self.widget.size() <> (100,100))

Assertions

assertEqual e assertNotEqual

def testSomething(self): self.widget.resize(100,100) self.assertEqual(self.widget.size, (100,100))

Assertions

O PyUnit fornece aliases para os métodos anteriores: assertEqual = failUnlessEqual assertNotEqual = failIfEqual

Assertions

Fail típico

def runTest(self): ... if not myObject.name = “Test”: self.fail("Wrong name") # or just 'self.fail()'

Exceções

Teste com Exceções Temos três soluções para testar situações

em que exceções esperadas não são lançadas

Exceções

Forma mais similar a Java

def runTest(self): try: self.widget.resize(-1,-1)

fail("expected a ValueError") except ValueError: pass

Exceções

Forma típica do Python

def runTest(self): try: self.widget.resize(-1,-1) except ValueError: pass else: fail("expected a ValueError")

Exceções

Usando o método do PyUnit

def runTest(self): self.assertRaises(ValueError, self.widget.resize, -1, -1)

Referências

http://pyunit.sourceforge.net/