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())





