Ignorando testes

Resumo : neste tutorial, você aprenderá como pular testes usando o módulo unittest do Python.

O módulo unittest permite pular um método de teste ou uma classe de teste. Para pular um teste, você tem três opções disponíveis:

  • Use o @unittest.skip()decorador.
  • Chame o skipTest()método da TestCaseclasse.
  • Levante a SkipTestexceção.

Ignorando exemplos de métodos de teste

O exemplo a seguir usa o @unittest.skip() decorador para ignorar o test_case_2()método incondicionalmente:

import unittest


class TestDemo(unittest.TestCase):
    def test_case_1(self):
        self.assertEqual(1+1, 2)

    @unittest.skip('Work in progress')
    def test_case_2(self):
        passLinguagem de código:  Python  ( python )

Execute o teste:

python -m unittest -vLinguagem de código:  Python  ( python )

Saída:

test_case_1 (test_skipping.TestDemo) ... ok
test_case_2 (test_skipping.TestDemo) ... skipped 'Work in progress'

----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK (skipped=1)Linguagem de código:  Python  ( python )

A saída mostra que dois testes foram executados e um foi ignorado. Para o teste ignorado, a saída mostra a mensagem que passamos ao @unittest.skip()decorador.

Da mesma forma, você pode chamar o skipTest()método de teste para ignorá-lo:

import unittest


class TestDemo(unittest.TestCase):
    def test_case_1(self):
        self.assertEqual(1+1, 2)

    def test_case_2(self):
        self.skipTest('Work in progress')Linguagem de código:  Python  ( python )

Execute o teste:

python -m unittest -vLinguagem de código:  Python  ( python )

Saída:

test_case_1 (test_skipping.TestDemo) ... ok
test_case_2 (test_skipping.TestDemo) ... skipped 'Work in progress'

----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK (skipped=1)Linguagem de código:  Python  ( python )

Além disso, você pode gerar a SkipTestexceção em um método de teste para ignorá-la.

import unittest


class TestDemo(unittest.TestCase):
    def test_case_1(self):
        self.assertEqual(1+1, 2)

    def test_case_2(self):
        raise unittest.SkipTest('Work in progress')Linguagem de código:  Python  ( python )

Execute o teste:

python -m unittest -vLinguagem de código:  Python  ( python )

Saída:

test_case_1 (test_skipping.TestDemo) ... ok
test_case_2 (test_skipping.TestDemo) ... skipped 'Work in progress'

----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK (skipped=1)Linguagem de código:  Python  ( python )

Ignorando exemplos de classe de teste

Para pular uma aula de teste, você usa o @unittest.skip()decorador no nível da classe.

O exemplo a seguir usa o @unittest.skip()decorador no nível da classe. Portanto, todos os testes da TestDemoclasse são ignorados:

import unittest


@unittest.skip('Work in progress')
class TestDemo(unittest.TestCase):
    def test_case_1(self):
        self.assertEqual(1+1, 2)

    def test_case_2(self):
        self.assertIsNotNone([])Linguagem de código:  Python  ( python )

Execute o teste:

python -m unittest -vLinguagem de código:  Python  ( python )

Saída:

test_case_1 (test_skipping.TestDemo) ... skipped 'Work in progress'
test_case_2 (test_skipping.TestDemo) ... skipped 'Work in progress'

----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK (skipped=2)Linguagem de código:  Python  ( python )

Ignorando um teste com uma condição

Às vezes, você deseja pular um teste condicionalmente. Por exemplo, você pode querer pular um teste se a plataforma atual, onde o teste está sendo executado, for Windows.

Para fazer isso você usa o @unittest.skipIf()decorador:

@unittest.skipIf(condition, reason)Linguagem de código:  Python  ( python )

Isso ignorará o teste se a condição for verdadeira. Além disso, exibirá o motivo para pular o teste no resultado do teste.

Por exemplo:

import unittest

from sys import platform


class TestDemo(unittest.TestCase):
    def test_case_1(self):
        self.assertEqual(1+1, 2)

    @unittest.skipIf(platform.startswith("win"), "Do not run on Windows")
    def test_case_2(self):
        self.assertIsNotNone([])Linguagem de código:  Python  ( python )

Neste exemplo, ignoramos o test_case_2()método se a plataforma atual for Windows. Para obter a plataforma atual onde o teste está sendo executado, usamos a sys.platformpropriedade.

Execute o teste:

python -m unittest -vLinguagem de código:  Python  ( python )

Saída:

test_case_1 (test_skipping.TestDemo) ... ok
test_case_2 (test_skipping.TestDemo) ... skipped 'Do not run on Windows'

----------------------------------------------------------------------
Ran 2 tests in 0.001s

OK (skipped=1)Linguagem de código:  Python  ( python )

Ao contrário do @unittest.skipIfdecorador, o @unittest.skipUnlessteste ignora uma condição que é verdadeira:

@unittest.skipUnless(condition, reason)Linguagem de código:  Python  ( python )

Resumo

  • Use o @unittest.skip()decorador, skipTest()método ou SkipTestexceção de aumento para pular um teste.
  • Use @unittest.skipIf()ou @unittest.skipUnless()para pular um teste condicionalmente.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *