Estrutura UnitTest - Estrutura

'unittest' suporta automação de teste, compartilhamento de configuração e código de desligamento para testes, agregação de testes em coleções e independência dos testes da estrutura de relatório.

O módulo unittest fornece classes que facilitam o suporte a essas qualidades para um conjunto de testes.

Para conseguir isso, o unittest suporta os seguintes conceitos importantes -

  • test fixture- Isso representa a preparação necessária para realizar um ou mais testes e quaisquer ações de limpeza associadas. Isso pode envolver, por exemplo, a criação de bancos de dados temporários ou proxy, diretórios ou o início de um processo de servidor.

  • test case- Esta é a menor unidade de teste. Isso verifica se há uma resposta específica a um determinado conjunto de entradas. unittest fornece uma classe base,TestCase, que pode ser usado para criar novos casos de teste.

  • test suite- Esta é uma coleção de casos de teste, suítes de teste ou ambos. Isso é usado para agregar testes que devem ser executados juntos. As suítes de teste são implementadas pela classe TestSuite.

  • test runner- Este é um componente que orquestra a execução de testes e fornece o resultado para o usuário. O executor pode usar uma interface gráfica, uma interface textual ou retornar um valor especial para indicar os resultados da execução dos testes.

Criando um Teste de Unidade

As etapas a seguir estão envolvidas na escrita de um teste de unidade simples -

Step 1 - Importe o módulo unittest em seu programa.

Step 2- Defina uma função a ser testada. No exemplo a seguir, a função add () deve ser submetida a teste.

Step 3 - Crie um caso de teste subclassificando unittest.TestCase.

Step 4- Definir um teste como método dentro da classe. O nome do método deve começar com 'teste'.

Step 5- Cada chamada de teste declara a função da classe TestCase. Existem muitos tipos de afirmações. O exemplo a seguir chama a função assertEquals ().

Step 6 - a função assertEquals () compara o resultado da função add () com o argumento arg2 e lança assertionError se a comparação falhar.

Step 7 - Finalmente, chame o método main () do módulo unittest.

import unittest
def add(x,y):
   return x + y
   
class SimpleTest(unittest.TestCase):
   def testadd1(self):
      self.assertEquals(add(4,5),9)
      
if __name__ == '__main__':
   unittest.main()

Step 8 - Execute o script acima a partir da linha de comando.

C:\Python27>python SimpleTest.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK

Step 9 - Os três seguintes podem ser os resultados possíveis de um teste -

Sr. Não Mensagem e descrição
1

OK

O teste passa. 'A' é exibido no console.

2

FAIL

O teste não passa e gera uma exceção AssertionError. 'F' é exibido no console.

3

ERROR

O teste levanta uma exceção diferente de AssertionError. 'E' é exibido no console.

Esses resultados são exibidos no console por '.', 'F' e 'E' respectivamente.

Interface da Linha de comando

O módulo unittest pode ser usado a partir da linha de comando para executar testes únicos ou múltiplos.

python -m unittest test1
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method

unittest suporta as seguintes opções de linha de comando. Para obter uma lista de todas as opções de linha de comando, use o seguinte comando -

Python –m unittest -h

Sr. Não Opção e descrição
1

-h, --help

Mostrar esta mensagem

2

v, --verbose

Saída detalhada

3

-q, --quiet

Saída mínima

4

-f, --failfast

Pare na primeira falha

5

-c, --catch

Pegue o controle-C e exiba os resultados

6

-b, --buffer

Buffer stdout e stderr durante as execuções de teste