Repaso
English
TestingIntermedioTST-01

¿Qué es una fixture de pytest?

Opciones

  1. Un decorator que hace que un test se omita
  2. Una función reutilizable que da preparación y limpieza (Opción correcta)
  3. Un test que siempre pasa por diseño
  4. Un flag para ejecutar en paralelo toda la suite

Respuesta

Una función reutilizable que da preparación (y limpieza con yield) a los tests que la piden por el nombre del parámetro

Por qué

Muchos tests necesitan la misma preparación: un usuario de prueba, una sesión de base de datos, una carpeta temporal. Una fixture es una función marcada con @pytest.fixture que lo prepara.

Un test simplemente pone el nombre de la fixture como parámetro y pytest le pasa el resultado.

El código después de yield es la limpieza que se ejecuta tras el test, aunque haya fallado. scope controla la reutilización (por test, módulo o toda la sesión).

@pytest.fixture
def db():
    conn = make_test_db()
    yield conn          # the test runs here
    conn.close()        # cleanup

def test_create_user(db):
    ...

Recuerda

Fixture = preparación reutilizable inyectada por nombre de parámetro.

Términos clave

Practica esta pregunta en Repaso