Pytest - Calendario

Los accesorios son funciones que se ejecutarán antes de cada función de prueba a la que se aplique. Los accesorios se utilizan para alimentar algunos datos a las pruebas, como conexiones de base de datos, URL para probar y algún tipo de datos de entrada. Por lo tanto, en lugar de ejecutar el mismo código para cada prueba, podemos adjuntar la función de accesorio a las pruebas y se ejecutará y devolverá los datos a la prueba antes de ejecutar cada prueba.

Una función está marcada como accesorio por:

@pytest.fixture

Una función de prueba puede utilizar un dispositivo mencionando el nombre del dispositivo como parámetro de entrada.

Crea un archivo test_div_by_3_6.py y agregue el siguiente código

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

Aquí, tenemos una función de accesorio llamada input_value, que proporciona la entrada a las pruebas. Para acceder a la función del dispositivo, las pruebas deben mencionar el nombre del dispositivo como parámetro de entrada.

Pytest mientras se ejecuta la prueba, verá el nombre del dispositivo como parámetro de entrada. Luego ejecuta la función de fijación y el valor devuelto se almacena en el parámetro de entrada, que puede ser utilizado por la prueba.

Ejecute la prueba usando el siguiente comando:

pytest -k divisible -v

El comando anterior generará el siguiente 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
==========================

Sin embargo, el enfoque tiene sus propias limitaciones. Una función de dispositivo definida dentro de un archivo de prueba tiene un alcance solo dentro del archivo de prueba. No podemos usar ese dispositivo en otro archivo de prueba. Para que un dispositivo esté disponible para varios archivos de prueba, tenemos que definir la función del dispositivo en un archivo llamado conftest.py.conftest.py se explica en el siguiente capítulo.