Pytest - Jogos

Luminárias são funções que serão executadas antes de cada função de teste à qual são aplicadas. As luminárias são usadas para alimentar alguns dados para os testes, como conexões de banco de dados, URLs para testar e algum tipo de dado de entrada. Portanto, em vez de executar o mesmo código para todos os testes, podemos anexar a função de fixação aos testes e ela será executada e retornará os dados para o teste antes de executar cada teste.

Uma função é marcada como um acessório por -

@pytest.fixture

Uma função de teste pode usar um aparelho mencionando o nome do aparelho como um parâmetro de entrada.

Crie um arquivo test_div_by_3_6.py e adicione o código abaixo a ele

import pytest

@pytest.fixture
def input_value():
   input = 39
   return input

def test_divisible_by_3(input_value):
   assert input_value % 3 == 0

def test_divisible_by_6(input_value):
   assert input_value % 6 == 0

Aqui, temos uma função de fixação chamada input_value, que fornece a entrada para os testes. Para acessar a função do aparelho, os testes devem mencionar o nome do aparelho como parâmetro de entrada.

Pytest, enquanto o teste está sendo executado, verá o nome do aparelho como parâmetro de entrada. Em seguida, ele executa a função de fixação e o valor retornado é armazenado no parâmetro de entrada, que pode ser usado pelo teste.

Execute o teste usando o seguinte comando -

pytest -k divisible -v

O comando acima irá gerar o seguinte resultado -

test_div_by_3_6.py::test_divisible_by_3 PASSED
test_div_by_3_6.py::test_divisible_by_6 FAILED
============================================== FAILURES
==============================================
________________________________________ test_divisible_by_6
_________________________________________
input_value = 39
   def test_divisible_by_6(input_value):
>  assert input_value % 6 == 0
E  assert (39 % 6) == 0
test_div_by_3_6.py:12: AssertionError
========================== 1 failed, 1 passed, 6 deselected in 0.07 seconds
==========================

No entanto, a abordagem vem com sua própria limitação. Uma função de fixação definida dentro de um arquivo de teste tem um escopo apenas dentro do arquivo de teste. Não podemos usar esse acessório em outro arquivo de teste. Para disponibilizar um fixture para vários arquivos de teste, temos que definir a função do fixture em um arquivo chamado conftest.py.conftest.py é explicado no próximo capítulo.