Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

122
Vistas
Eliminación de archivos en caché después de una ejecución de pytest

Estoy usando joblib.Memory para almacenar en caché cálculos costosos cuando ejecuto pruebas con py.test . El código que estoy usando se reduce a lo siguiente,

 from joblib import Memory memory = Memory(cachedir='/tmp/') @memory.cache def expensive_function(x): return x**2 # some computationally expensive operation here def test_other_function(): input_ds = expensive_function(x=10) ## run some tests with input_ds

que funciona bien Soy consciente de que esto podría hacerse de manera más elegante con el accesorio tmpdir_factory , pero eso no viene al caso.

El problema que tengo es cómo limpiar los archivos en caché una vez que se ejecutan todas las pruebas,

  • ¿Es posible compartir una variable global entre todas las pruebas (que contendría, por ejemplo, una lista de rutas a los objetos almacenados en caché)?
  • ¿Existe un mecanismo en py.test para llamar a algún comando una vez que se ejecutan todas las pruebas (ya sea que tengan éxito o no)?
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

¿Es posible compartir una variable global entre todas las pruebas (que contendría, por ejemplo, una lista de rutas a los objetos almacenados en caché)?

Yo no iría por ese camino. Es mejor evitar el estado mutable global, particularmente en las pruebas.

¿Existe un mecanismo en py.test para llamar a algún comando una vez que se ejecutan todas las pruebas (ya sea que tengan éxito o no)?

Sí, agregue un elemento de ámbito de sesión de uso automático en su archivo conftest.py a nivel de proyecto:

 # conftest.py import pytest @pytest.yield_fixture(autouse=True, scope='session') def test_suite_cleanup_thing(): # setup yield # teardown - put your command here

El código después del rendimiento se ejecutará, una vez, al final del conjunto de pruebas, independientemente de si pasa o falla.

over 4 years ago · Santiago Trujillo Denunciar

0

¿Es posible compartir una variable global entre todas las pruebas (que contendría, por ejemplo, una lista de rutas a los objetos almacenados en caché)?

En realidad, hay un par de formas de hacerlo, cada una con ventajas y desventajas. Creo que esta respuesta SO los resume bastante bien: https://stackoverflow.com/a/22793013/3023841 , pero por ejemplo:

 def pytest_namespace(): return {'my_global_variable': 0} def test_namespace(self): assert pytest.my_global_variable == 0

¿Existe un mecanismo en py.test para llamar a algún comando una vez que se ejecutan todas las pruebas (ya sea que tengan éxito o no)?

Sí, py.test tiene funciones de desmontaje disponibles:

 def setup_module(module): """ setup any state specific to the execution of the given module.""" def teardown_module(module): """ teardown any state that was previously setup with a setup_module method. """
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda