PyCharm – Testes Unitários – Python

Publicado: 28 de novembro de 2014 em Python

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:

Cria Classe de Teste

Cria Classe de Teste

2 – Para criar o teste escolha apenas os métodos Setters:

Métodos Setters

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:
Erros

Erros

4 – Retorne os valores dos métodos como no código abaixo e execute o teste novamente:

Testes bem sucedidos

Testes bem sucedidos

 

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

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s