Explicar los métodos Python de “configuración” y “desmontaje” utilizados en los casos de prueba

4 minutos de lectura

avatar de usuario
NOVATO

¿Alguien puede explicar el uso de Python? setUp y tearDown métodos al escribir casos de prueba aparte de eso setUp se llama inmediatamente antes de llamar al método de prueba y tearDown se llama inmediatamente después de haber sido llamado?

avatar de usuario
Artsiom Rudzenka

En general, agrega todos los pasos de requisitos previos para configurar y todos los pasos de limpieza para desmontar.

Puedes leer más con ejemplos aquí.

Cuando se define un método setUp(), el ejecutor de pruebas ejecutará ese método antes de cada prueba. Del mismo modo, si se define un método tearDown(), el ejecutor de pruebas invocará ese método después de cada prueba.

Por ejemplo, tiene una prueba que requiere que existan elementos, o cierto estado, por lo que coloca estas acciones (crear instancias de objetos, inicializar db, preparar reglas, etc.) en la configuración.

Además, como sabe, cada prueba debe detenerse en el lugar donde se inició, lo que significa que tenemos que restaurar el estado de la aplicación a su estado inicial, por ejemplo, cerrar archivos, conexiones, eliminar elementos recién creados, devolver llamadas a transacciones, etc. los pasos deben incluirse en el desmontaje.

Entonces, la idea es que la prueba en sí misma debe contener solo las acciones que se realizarán en el objeto de prueba para obtener el resultado, mientras que la configuración y el desmontaje son los métodos que lo ayudarán a dejar su código de prueba limpio y flexible.

Puede crear una configuración y desmontaje para un montón de pruebas y definirlas en una clase principal, por lo que sería fácil para usted respaldar dichas pruebas y actualizar las preparaciones y limpiezas comunes.

Si está buscando un ejemplo fácil, por favor utilice el siguiente enlace con el ejemplo

avatar de usuario
matt curtis

Puede usarlos para eliminar el código común a todas las pruebas en el conjunto de pruebas.

Si tiene una gran cantidad de código repetido en sus pruebas, puede acortarlas moviendo este código a configuración/desmontaje.

Puede usar esto para crear datos de prueba (por ejemplo, configurar falsificaciones/simulacros) o eliminar funciones con falsificaciones.

Si está realizando pruebas de integración, puede verificar las condiciones previas del entorno en la configuración y omitir la prueba si algo no está configurado correctamente.

Por ejemplo:

class TurretTest(unittest.TestCase):

    def setUp(self):
        self.turret_factory = TurretFactory()
        self.turret = self.turret_factory.CreateTurret()

    def test_turret_is_on_by_default(self):
        self.assertEquals(True, self.turret.is_on())

    def test_turret_turns_can_be_turned_off(self):
        self.turret.turn_off()
        self.assertEquals(False, self.turret.is_on())

  • +1 porque las 9 líneas de código es todo lo que necesitaba para asimilar el 100%. Ejemplo elegante y conciso. Para ser honesto, esas 9 líneas son lo único que leí en la página además de la pregunta, que también era mi pregunta. ¿Dijiste algo en inglés antes del código de muestra? ¡No era necesario! ¡El código lo decía todo! gracias matt

    – Nathan C. Tresch

    10 de mayo de 2013 a las 6:45

  • No tengo claro cómo se demuestra aquí “omita la prueba si algo no está configurado correctamente”. ¿O fue solo un aparte?

    – usuario5359531

    18 de agosto de 2017 a las 15:35

Suponga que tiene una suite con 10 pruebas. 8 de las pruebas comparten el mismo código de instalación/desmontaje. Los otros 2 no.

la configuración y el desmontaje le brindan una buena manera de refactorizar esas 8 pruebas. Ahora, ¿qué haces con las otras 2 pruebas? Los movería a otro caso de prueba/suite. Por lo tanto, usar la configuración y el desmontaje también ayuda a brindar una forma natural de dividir las pruebas en casos/suites.

  • A veces no se desea mover las pruebas a otro caso de prueba. En ese caso, puede escribir un decorador con el código de configuración/desmontaje y solo decorar las funciones de prueba deseadas.

    – Matthijs

    2 de mayo de 2018 a las 13:44

  • Esto no es de ninguna manera una respuesta a la pregunta.

    – gentil

    16 de noviembre de 2019 a las 15:56

  • @gented, estás de acuerdo o no, este consejo es útil… 🙂

    – Kan

    2 de marzo de 2021 a las 5:18

¿Ha sido útil esta solución?