Tutorial PyUnit: estrutura de teste de unidade Python (com exemplo)

Índice:

Anonim

O que é teste de unidade?

O teste de unidade em Python é feito para identificar bugs no início do estágio de desenvolvimento do aplicativo, quando os bugs são menos recorrentes e menos caros para consertar.

Um teste de unidade é um teste de nível de código com script projetado em Python para verificar uma pequena "unidade" de funcionalidade. O teste de unidade é uma estrutura orientada a objetos baseada em acessórios de teste.

Técnicas de teste de unidade Python

O Teste de Unidade Python envolve principalmente o teste de um módulo específico sem acessar nenhum código dependente. Os desenvolvedores podem usar técnicas como stubs e simulações para separar o código em "unidades" e executar testes de nível de unidade nas partes individuais.

  • TDD de Desenvolvimento Orientado a Testes : O Teste de Unidade deve ser feito junto com o Python e, para isso, os desenvolvedores usam o método de Desenvolvimento Orientado a Testes. No método TDD, você primeiro projeta testes de unidade Python e só então continua escrevendo o código que implementará esse recurso.
  • Stubs e Mocks: são duas técnicas principais que simulam métodos falsos que estão sendo testados. Um Stub é usado para preencher algumas dependências necessárias para que o teste de unidade seja executado corretamente. Um Mock, por outro lado, é um objeto falso que executa os testes onde colocamos assert.

    As intenções de ambos os métodos são as mesmas para eliminar o teste de todas as dependências de uma classe ou função.

Estrutura de teste de unidade Python

Para tornar o processo de Teste de Unidade mais fácil e melhorar a qualidade do seu projeto, é recomendado o Python Unit Testing Framework. A estrutura de teste de unidade inclui

  • PyUnit: PyUnit suporta fixtures, casos de teste, suítes de teste e um executor de teste para o teste automatizado do código. No PyUnit, você pode organizar casos de teste em suítes com os mesmos acessórios
  • Nose: os plug-ins integrados do Nose ajudam você com a captura de saída, cobertura de código, doctests, etc. A sintaxe do Nose é bem mais simples e reduz as barreiras para escrever testes. Ele estende o teste de unidade Python para tornar o teste mais fácil.
  • Doctest: o script de teste do Doctest entra no docstring com uma pequena função na parte inferior do arquivo. Doctest permite que você teste seu código executando exemplos incluídos na documentação e verificando se eles retornaram os resultados esperados. O caso de uso do doctest é menos detalhado e não captura casos especiais. Eles são úteis como uma documentação expressiva do principal caso de uso de um módulo e seus componentes.

Teste de Unidade com PyUnit

Pyunit é uma porta Python do JUnit. Como parte do Pyunit, no módulo unittest existem cinco classes principais.

  • Classe TestCase : A classe TestCase carrega as rotinas de teste e fornece ganchos para fazer cada rotina e limpar depois
  • Classe TestSuite : serve como um contêiner de coleção e pode possuir vários objetos de caso de teste e vários objetos de teste.
  • Classe TestLoader : esta classe carrega casos de teste e suítes definidos localmente ou de um arquivo externo. Ele emite objetos de suíte de teste que possuem essas suítes e estojos
  • Classe TextTestRunner : para executar os testes, ela fornece uma plataforma padrão para executar os testes
  • A classe TestResults : oferece um contêiner padrão para os resultados do teste

Projetando um caso de teste para teste Python usando PyUnit

Um teste de unidade fornece uma classe base, caso de teste, que pode ser usado para criar novos casos de teste. Para projetar o caso de teste, existem três conjuntos de métodos usados ​​são

unittest.TestCase

setUp()teardown()skipTest(aMesg:string)fail(aMesg:string)id():stringshortDescription():string

No primeiro conjunto estão os ganchos pré e pós-teste. O método setup () começa antes de cada rotina de teste, o teardown () após a rotina.

O segundo conjunto de métodos controla a execução do teste. Ambos os métodos usam uma string de mensagem como entrada e cancelam um teste em andamento. Mas o método skiptest () aborta o teste atual enquanto o método fail () falha completamente.

O último ou terceiro método ajuda a determinar o teste. O método id () retorna uma string que consiste no nome do objeto de caso de teste e da rotina de teste. E o método shortDescription () retorna o comentário docstr no início de cada rotina de teste.

Vantagens de usar o teste de unidade Python

  • Ajuda a detectar bugs no início do ciclo de desenvolvimento
  • Ajuda você a escrever programas melhores
  • Ele sincroniza facilmente com outros métodos e ferramentas de teste
  • Terá muito menos bugs
  • É mais fácil modificar no futuro com muito menos consequências