¿Qué es una fixture de pytest?
Opciones
- Un decorator que hace que un test se omita
- Una función reutilizable que da preparación y limpieza (Opción correcta)
- Un test que siempre pasa por diseño
- 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.