Pytest - Agrupando os testes

Neste capítulo, aprenderemos como agrupar os testes usando marcadores.

Pytest nos permite usar marcadores em funções de teste. Os marcadores são usados ​​para definir vários recursos / atributos para funções de teste. O Pytest fornece muitos marcadores embutidos como xfail, skip e parametrize. Além disso, os usuários podem criar seus próprios nomes de marcadores. Os marcadores são aplicados nos testes usando a sintaxe fornecida abaixo -

@pytest.mark.<markername>

Para usar marcadores, temos que import pytestmódulo no arquivo de teste. Podemos definir nossos próprios nomes de marcadores para os testes e executar os testes com esses nomes de marcadores.

Para executar os testes marcados, podemos usar a seguinte sintaxe -

pytest -m <markername> -v

-m <markername> representa o nome do marcador dos testes a serem executados.

Atualize nossos arquivos de teste test_compare.py e test_square.pycom o seguinte código. Estamos definindo 3 marcadores– great, square, others.

test_compare.py

import pytest
@pytest.mark.great
def test_greater():
   num = 100
   assert num > 100

@pytest.mark.great
def test_greater_equal():
   num = 100
   assert num >= 100

@pytest.mark.others
def test_less():
   num = 100
   assert num < 200

test_square.py

import pytest
import math

@pytest.mark.square
def test_sqrt():
   num = 25
   assert math.sqrt(num) == 5

@pytest.mark.square
def testsquare():
   num = 7
   assert 7*7 == 40

@pytest.mark.others
   def test_equality():
   assert 10 == 11

Agora, para executar os testes marcados como others, execute o seguinte comando -

pytest -m others -v

Veja o resultado abaixo. Ele executou os 2 testes marcados comoothers.

test_compare.py::test_less PASSED
test_square.py::test_equality FAILED
============================================== FAILURES
==============================================
___________________________________________ test_equality
____________________________________________
   @pytest.mark.others
   def test_equality():
>  assert 10 == 11
E  assert 10 == 11
test_square.py:16: AssertionError
========================== 1 failed, 1 passed, 4 deselected in 0.08 seconds
==========================

Da mesma forma, podemos executar testes com outros marcadores também - ótimo, compare