A veces, las funciones privadas de un módulo o clase son simplemente unidades internas de funcionalidad aún por extraer, que podrían merecer sus propias pruebas. Entonces, ¿por qué no probarlos? Nos vamos a escribir pruebas para ellos más adelante si / cuando se extraen. Entonces, ¿por qué no escribir las pruebas ahora, cuando todavía forman parte del mismo archivo?
Demostrar:
Primero escribí module_a. Ahora quiero escribir pruebas para ello. Me gustaría probar la función 'privada' _private_func. No entiendo por qué no escribiría una prueba para él, si más tarde podría refactorizarlo en su propio módulo interno de todos modos, y luego escribir pruebas para él.
Supongamos que tengo un módulo con las siguientes funciones (también podría ser una clase):
def public_func(a):
b = _do_stuff(a)
return _do_more_stuff(b)
_do_stuffy _do_more_stuffson funciones 'privadas' del módulo.
Entiendo la idea de que solo debemos probar la interfaz pública, no los detalles de implementación. Sin embargo, aquí está la cosa:
_do_stuffy _do_more_stuffcontienen la mayoría de la funcionalidad del módulo. Cada uno de ellos podría ser una función pública de un módulo 'interno' diferente. Pero aún no han evolucionado y son lo suficientemente grandes como para extraerse para separar archivos.
Por lo tanto, probar estas funciones se siente bien porque son unidades importantes de funcionalidad. Si estuvieran en diferentes módulos como funciones públicas, los habríamos probado. Entonces, ¿por qué no probarlos cuando aún no están (o nunca) extraídos en un archivo diferente?
