Estoy en un proyecto en el que estamos comenzando a refaccionar una base de código masiva. Un problema que surgió inmediatamente es que cada archivo importa muchos otros archivos. ¿Cómo me burlo de manera elegante de esto en mi prueba de unidad sin tener que alterar el código real para poder comenzar a escribir pruebas unitarias?Python, pruebas unitarias y burlas de importaciones
Como un ejemplo: el archivo con las funciones que deseo probar, importa otros diez archivos que forman parte de nuestro software y no de las bibliotecas básicas de python.
Quiero poder ejecutar las pruebas unitarias lo más separadamente posible y por ahora solo voy a probar funciones que no dependen de las cosas de los archivos que se importan.
Gracias por todas las respuestas.
No sabía realmente lo que quería hacer desde el principio, pero ahora creo que sé.
El problema fue que algunas importaciones solo fueron posibles cuando toda la aplicación se estaba ejecutando debido a la magia de un auto de terceros. Así que tuve que crear algunos stubs para estos módulos en un directorio que señalé con sys.path
Ahora puedo importar el archivo que contiene las funciones que quiero escribir pruebas en mi archivo de prueba unitaria sin quejas sobre módulos faltantes
Desea agregar 'try: finally:' en el método mock_import, para evitar salir del sistema con la importación envuelta en lugar de la predeterminada en caso de error – Yonatan
@Yonatan: ¡tiene razón, gracias! Modifiqué mi código – DzinX