2012-01-20 10 views
12

Mi proyecto actual tiene una política de cobertura de código del 100% de sus pruebas unitarias. Nuestro servicio de integración continua no permitirá a los desarrolladores implementar código sin una cobertura del 100%.Prueba unitaria distribuida y cobertura de código en Python

Como el proyecto ha crecido, también lo ha hecho el tiempo para ejecutar el conjunto de pruebas completo. Si bien los desarrolladores normalmente ejecutan un subconjunto de pruebas relevantes para el código que están cambiando, generalmente realizarán una ejecución completa final antes de enviarla a CI, y el servidor de CI también ejecutará el conjunto de pruebas completo.

Las pruebas unitarias por su naturaleza son altamente paralelizables, ya que son autónomas y sin estado de prueba a prueba. Devuelven solo dos piezas de información: aprobado/reprobado y las líneas de código cubiertas. Una solución de mapa/reducir parece que funcionaría muy bien.

¿Existen marcos de prueba Python que ejecutarán pruebas en un grupo de máquinas con cobertura de código y combinar los resultados cuando terminen?

+0

¿Encontró algo que hace lo que quería? –

+0

@ stair314 Lamentablemente no. Hemos comprado algo más de tiempo optimizando nuestras pruebas unitarias y eliminando una gran cantidad de trabajo innecesario. También hemos agregado máquinas a nuestro clúster de CI para que podamos construir (y probar) en paralelo, pero aún ejecutamos todas las pruebas todas las veces. Con suerte, en algún momento podremos concentrar algunos esfuerzos de desarrollo en este problema. –

Respuesta

4

No conozco ningún framework de pruebas que ejecute pruebas distribuidas desde un grupo de máquinas, pero nose admite la paralelización de pruebas en la misma máquina usando multiprocessing.

Como mínimo que podría ser un buen punto de partida para crear un marco de pruebas distribuido

1

No es exactamente lo que está viendo, pero lo más cerca que podía recordar es de los grupos de Hadoop está utilizando JUnit para probar con Hadoop . Aquí está el mail. Como se menciona en la búsqueda por correo de documentos gridunit.

La comprobación de unidades con Hadoop de forma distribuida es muy interesante. Cualquier marco alrededor de esto sería muy útil, pero desarrollar un marco no debería ser muy difícil. Si está interesado, hágamelo saber.

4

Creo que no existe un marco que coincida exactamente con sus necesidades.

Sé que py.test tiene el complemento xdist que agrega ejecutores de prueba distribuidos. Puede usarlo para escribir su infraestructura de CI en la parte superior.

+0

El enlace está muerto. –

+0

https://pypi.python.org/pypi/pytest-xdist – Twirrim

Cuestiones relacionadas