A maioria das metodologias disponíveis para o desenvolvimento de software e gerenciamento de projetos incluem como pratica básica essencial o desenvolvimento e execução de testes unitários para que um projeto de desenvolvimento possa passar para próxima fase.
Uma boa execução de um projeto bem elaborado em diversas metodologias utilizam ambientes e exigem que os testes unitários sejam executados no ambiente de desenvolvimento (DEV) utilizando uma ferramenta para este proposito e reexecutados por consultores funcionais/testadores, na fase de testes unitários no ambiente real de qualidade (QAS) para que só então possam executar a fase de testes integrados antes de aprovarem e homologarem o software para utilização em um ambiente produtivo (PRD).
O teste unitário executado do ponto de vista do setor de qualidade (QAS) é feito validando todas as partes dos software, incluindo, design intuitivo, usabilidade, teclas de atalho, layouts, grafia, links e etc. É claro que existem algumas diferenças sutis entre metodologias, como um ou outro procedimento ou diferentes nomenclaturas mas no final todas possuem o mesmo proposito, um software de qualidade, livre de erros e dentro do orçamento inicial do projeto. Bem! No mundo real, não importa qual a metodologia escolhida, isto nem sempre é possível.
PyCharm Community IDE
PyCharm é um ambiente profissional de desenvolvimento integrado (IDE) utilizado para a programação em Python. Ele fornece uma análise de código, depurador gráfico, testador unidade integrada, integração VCS/DVCS e apoia o desenvolvimento web com Django. Muitos desenvolvedores da comunidade Python elegeram o PyCharm como a melhor IDE para desenvolvimento Python, a IDE pode ser utilizada na versão comunitária ou na versão paga.
PyCharm: http://www.jetbrains.com/pycharm/
PyUnit – Unit Test Framework
O framework de testes unitários para Python, por vezes referido como PyUnit é uma versão da linguagem Python do JUnit. O JUnit é, por sua vez, uma versão Java do framework de testes Smalltalk, o JUnit é muito conhecido e utilizado no mudo Java também proliferou para outras linguagem de programação como entre outras, para C#.
PyUnit: https://docs.python.org/2/library/unittest.html
Executando Testes Unitários no PyCharm
1 – Crie um novo projeto Python chamado DAPyTeste, crie um novo arquivo Python chamado Participante e utilize o código encontrado logo abaixo. Na declaração da classe Participante clique com o botão direito e escolha Go To->Test:
2 – Para criar o teste escolha apenas os métodos Setters:
3 – Complete os métodos com respectivo código da classe de teste encontrado logo abaixo, utilize os comentários no código para saber mais sobre os teste unitários.
- Para efetuar um teste com erros, modifique os valores alimentados nos métodos de teste.
- Para rodar o teste na barra de ferramentas, selecione Unittests in DAPyTeste e clique em Run:
4 – Retorne os valores dos métodos como no código abaixo e execute o teste novamente:
Exemplo:
Neste exemplo criamos uma simples classe com métodos Getter e Setter e uma classe de caso de teste para efetuar um teste unitário nos métodos criados.
Python
Classe – Participante
# coding=utf-8 # Desenvolvimento Aberto # Participante.py __author__ = 'Desenvolvimento Aberto' class Participante(): # Define atributos privados def __init__(self): self.__nome = None self.__idade = None # Define métodos Getter e Setter def getNome(self): return self.__nome def setNome(self, nome): self.__nome = nome #Inverta o código acima: nome = self.nome #Você vai obter um erro de lógica #Passara pelo interpretador Python #Mas não passara pelo teste Unitário #Deste modo você previne erros escritos #por desatenção ou desenvolvimento emergências #como nos Sprints em algumas metodologias def getIdade(self): return self.__idade def setIdade(self, idade): self.__idade = idade # Você também pode optar por propriedades # Aos métodos Getter e Setter # Segue exemplo propriedade Nome: @property def Nome(self): return self.__nome @Nome.setter def Nome(self, value): self.__nome = value # Cria Instancia da Classe participante = Participante() #Alimenta valores participante.setNome("Joao da Silva") participante.setIdade(20) # Imprime dados print participante.getNome() print participante.getIdade()
PyUnit Test Case – ParticipanteTeste
# coding=utf-8 # Desenvolvimento Aberto # TestParticipante.py from unittest import TestCase from Participante import Participante __author__ = 'Desenvolvimento Aberto' class TestParticipante(TestCase): # Define Métodos de Testes def test_setNome(self): # Testa métodos Getter e Setter p1 = Participante() p1.setNome("Nome") self.assertEqual("Nome", p1.getNome()) def test_setIdade(self): # Testa métodos Getter e Setter p2 = Participante() p2.setIdade(20) self.assertEqual(20, p2.getIdade())