🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónPruebas unitarias de una regla
5 tareas · 40 min · Principiante
Una regla de detección escrita en Python se puede probar como cualquier función: se le da un conjunto de eventos y se comprueba qué responde. En Transportes Río Manso el equipo tiene una regla de fuerza bruta con cuatro pruebas en verde y la dirección quiere saber si eso basta. Lees la regla, sus pruebas y lo que mostró pytest, y aprendes a distinguir una prueba que protege de una que solo da tranquilidad: las que no se ejecutan, las que no comprueban nada y las que no tocan el límite.
Objetivo de la sala
Una regla de detección escrita en Python se puede probar como cualquier función: se le da un conjunto de eventos y se comprueba qué responde. En Transportes Río Manso el equipo tiene una regla de fuerza bruta con cuatro pruebas en verde y la dirección quiere saber si eso basta. Lees la regla, sus pruebas y lo que mostró pytest, y aprendes a distinguir una prueba que protege de una que solo da tranquilidad: las que no se ejecutan, las que no comprueban nada y las que no tocan el límite.pytest busca archivos cuyo nombre empieza por test_ y, dentro, funciones cuyo nombre también empieza por test. Ejecuta cada una; si no salta ninguna excepción, la prueba pasa. Una comprobación se escribe con assert: si la condición es falsa, la prueba falla.
Un resultado en verde dice que los casos escritos dieron lo esperado. No dice nada de los casos que nadie escribió. Una buena lectura empieza por esa frontera: qué se comprobó y qué no.
Abre /reglas/resultado_pytest.txt y /reglas/politica.txt antes de contestar.
Responde para continuar
La ejecución registrada muestra todas las pruebas en verde. ¿Qué se puede afirmar con eso?
Una prueba sin assert pasa siempre, salvo que el código que llama lance una excepción. Llamar a la función y no mirar lo que devuelve es como comprobar que un detector de humo está enchufado sin acercarle una llama. En el informe aparece en verde y suma al número de pruebas.
Abre /reglas/test_regla_fuerza_bruta.py y revisa una por una qué comprueba cada función de prueba.
Responde para continuar
Escribe el nombre de la función de prueba que no contiene ninguna comprobación.
Ver pista de ayuda
Busca la función de prueba en la que ninguna línea empieza con la palabra que pytest usa para comprobar.
pytest solo recoge lo que sigue su convención de nombres. Una función escrita con todo el cuidado pero llamada de otra manera no falla ni avisa: simplemente no existe para el programa de pruebas. Es la forma más silenciosa de tener una cobertura menor de la que se cree.
La comparación útil es entre lo que está escrito en el archivo de pruebas y lo que pytest anuncia haber recogido: cuenta las funciones y compáralas con el número de la ejecución.
Responde para continuar
Escribe el nombre de la función del archivo de pruebas que pytest no recogió.
Ver pista de ayuda
pytest anuncia cuántas pruebas recogió; compara ese número con las funciones del archivo y descarta la que no es una prueba.
Los errores de una regla de umbral viven en el límite: «5 o más» y «más de 5» parecen lo mismo hasta que entra un usuario con exactamente el número del límite. Las buenas pruebas eligen valores justo debajo, justo en y justo encima del umbral.
Compara el criterio de la política con los casos que prueban los tres tests con eventos. Una de las cantidades que importa no se ejercita en ninguna prueba.
Responde para continuar
Escribe el número de fallos de la política que ninguna prueba ejercita.
Ver pista de ayuda
La política da una cantidad exacta de fallos; mira con cuántos fallos trabajan las pruebas de la carpeta y cuál falta.
La prueba que falta es la del valor del límite. Si se escribe con exactamente los fallos que la política declara, y la política dice que alerta, el resultado esperado es una alerta. Esa prueba, antes de aprobar la regla, es la que dice si la regla lee lo que el equipo de seguridad escribió.
Una buena práctica es escribir el caso del límite primero y dejar que falle si el código no lo cumple: la prueba que falla por una razón correcta vale más que diez que pasan sin tocar el límite.
Responde para continuar
¿Qué prueba habría que añadir a `test_regla_fuerza_bruta.py`?
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.