Teste de nariz - Estrutura

O projeto do nariz foi lançado em 2005, um ano após py.testrecebeu sua aparência moderna. Ele foi escrito por Jason Pellerin para suportar os mesmos idiomas de teste dos pioneiros do py.test, mas em um pacote que é mais fácil de instalar e manter.

o nose módulo pode ser instalado com a ajuda do utilitário pip

pip install nose

Isso instalará o módulo nariz na distribuição Python atual, bem como um nosetest.exe, o que significa que o teste pode ser executado usando este utilitário, bem como usando o switch –m.

C:\python>nosetests –v test_sample.py
Or
C:\python>python –m nose test_sample.py

nose coleta testes de unittest.TestCasesubclasses, é claro. Também podemos escrever funções de teste simples, bem como classes de teste que não são subclasses de unittest.TestCase. O nariz também fornece uma série de funções úteis para escrever testes cronometrados, testar exceções e outros casos de uso comuns.

nosecoleta testes automaticamente. Não há necessidade de coletar manualmente os casos de teste em suítes de teste. A execução de testes é responsiva, uma vez quenose começa a executar testes assim que o primeiro módulo de teste é carregado.

Tal como acontece com o módulo unittest, nose suporta fixtures no nível de pacote, módulo, classe e caso de teste, de forma que a inicialização cara pode ser feita com a menor freqüência possível.

Uso Básico

Vamos considerar o nosetest.py semelhante ao script usado anteriormente -

# content of nosetest.py
def func(x):
   return x + 1
   
def test_answer():
   assert func(3) == 5

Para executar o teste acima, use a seguinte sintaxe de linha de comando -

C:\python>nosetests –v nosetest.py

A saída exibida no console será a seguinte -

nosetest.test_answer ... FAIL
================================================================
FAIL: nosetest.test_answer
----------------------------------------------------------------------
Traceback (most recent call last):
   File "C:\Python34\lib\site-packages\nose\case.py", line 198, in runTest
      self.test(*self.arg)
   File "C:\Python34\nosetest.py", line 6, in test_answer
      assert func(3) == 5
AssertionError
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures = 1)

nose pode ser integrado com DocTest usando with-doctest opção em uma linha de comando anterior.

\nosetests --with-doctest -v nosetest.py

Você pode usar nose em um script de teste -

import nose
nose.main()

Se você não deseja que o script de teste saia com 0 em caso de sucesso e 1 em falha (como unittest.main), use nose.run () ao invés -

import nose
result = nose.run()

O resultado será verdadeiro se a execução do teste for bem-sucedida ou falso se falhar ou gerar uma exceção não detectada.

nosesuporta acessórios (métodos de configuração e desmontagem) no nível de pacote, módulo, classe e teste. Tal como acontece com os acessórios py.test ou unittest, a configuração sempre é executada antes de qualquer teste (ou coleção de testes para pacotes e módulos de teste); A desmontagem é executada se a configuração tiver sido concluída com êxito, independentemente do status da execução do teste.