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 daTestCase
classe. - Levante a
SkipTest
exceçã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):
pass
Linguagem de código: Python ( python )
Execute o teste:
python -m unittest -v
Linguagem 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 -v
Linguagem 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 SkipTest
exceçã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 -v
Linguagem 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 TestDemo
classe 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 -v
Linguagem 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.platform
propriedade.
Execute o teste:
python -m unittest -v
Linguagem 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.skipIf
decorador, o @unittest.skipUnless
teste 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 ouSkipTest
exceção de aumento para pular um teste. - Use
@unittest.skipIf()
ou@unittest.skipUnless()
para pular um teste condicionalmente.