Sobes.tech
Junior — Middle

¿Puedes explicar qué significa el concepto de Scope en el contexto de PyTest y cómo afecta la ejecución de las pruebas?

sobes.tech AI

Respuesta de la IA

En PyTest, el parámetro scope define el ámbito de vida (ciclo de vida) de la fixture, es decir, cuánto tiempo se creará y se usará en las pruebas.

Los valores principales de scope son:

  • function (por defecto): la fixture se crea de nuevo para cada prueba.
  • class: la fixture se crea una vez por cada clase de pruebas.
  • module: la fixture se crea una vez por cada módulo (archivo de pruebas).
  • package: la fixture se crea una vez por paquete.
  • session: la fixture se crea una vez por toda la sesión de pruebas.

Por ejemplo, si la fixture tiene scope="module", se inicializa una vez antes de ejecutar todas las pruebas en el módulo y se destruye después de su ejecución. Esto ayuda a ahorrar tiempo y recursos, especialmente si la fixture crea, por ejemplo, una conexión a una base de datos o un servidor.

Ejemplo de fixture con scope:

import pytest

@pytest.fixture(scope="module")
def db_connection():
    conn = create_connection()
    yield conn
    conn.close()

De esta manera, el scope afecta el rendimiento y la aislamiento de las pruebas, permitiendo controlar con qué frecuencia se crean y destruyen los recursos.