Filosofía y orden de la prueba de unidad de Python

Si bien la filosofía de unittesting es que las pruebas se pueden ejecutar en cualquier orden y deberían pasar, ¿qué sucede si está implementando una API donde no hay otros medios para comunicarse con un servidor... y necesita probar una característica muy básica? (como eliminar) antes de poder realizar tareas más complicadas? ¿Es entonces razonable ordenar las pruebas?

Si es así, ¿cómo puedo hacerlo con python? unittest ¿módulo?

preguntado el 09 de marzo de 12 a las 16:03

Para aclarar: ¿está diciendo que desea ejecutar primero la prueba de eliminación, porque no tiene sentido ejecutar las otras si falla? -

Incluso si esas primeras pruebas fallan, las pruebas posteriores con eliminación aún se ejecutarán, entonces, ¿cuál es el problema? -

A grandes rasgos, "si las pruebas unitarias dependen de servicios externos u otras pruebas unitarias, no son pruebas unitarias". Suena un poco dogmático. Pero es una gran bandera roja. Si está probando una semántica dependiente compleja del propio servicio, es probable que desee encapsular todos esos "pasos" en una sola prueba. Pero eso se convierte en prueba de protocolo. Las pruebas unitarias realmente deberían ser independientes. -

@ultimatebuster: lo que está tratando de hacer aquí es algún tipo de prueba de integración, no una prueba unitaria. -

1 Respuestas

Ya parece darse cuenta de que sus pruebas unitarias deben ser independientes. La única otra razón por la que puedo ver que desea ejecutar las pruebas en un orden fijo es que desea dejar de ejecutar la suite si falla una prueba temprana. Para ello, puede utilizar el opción de línea de comandos

-f, --failfast

Detenga la ejecución de prueba en el primer error o falla.

Por cierto, las pruebas se ejecutan en orden alfabético:

el orden en el que se ejecutarán los distintos casos de prueba se determina ordenando los nombres de las funciones de prueba con respecto al orden incorporado para las cadenas.

(documentos)

respondido 09 mar '12, 17:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.