Pruebas Unitarias con Método Setup en Python

Clase 5 de 20Curso de Unit Testing en Python

Resumen

El uso del método setup en los tests permite simplificar y evitar la duplicación de código en las pruebas. Al iniciar un test, setup se ejecuta automáticamente, preparando el entorno para cada prueba de forma eficiente. En este caso, pasamos de un proyecto de calculadora a uno de una cuenta bancaria, y veremos cómo implementar pruebas unitarias para depósitos, retiros y consultas de saldo utilizando setup para optimizar el código.

¿Cómo implementar pruebas para depósitos en una cuenta bancaria?

Primero, se crea la clase de test donde se probarán los métodos de una cuenta bancaria. Para hacer un depósito, se debe instanciar una cuenta con un saldo inicial, realizar el depósito y luego validar que el saldo ha cambiado correctamente.

Pasos:

  • Crear el archivo test_bank_account.py.
  • Instanciar una cuenta con saldo inicial.
  • Probar que el método de depósito ajusta el saldo correctamente.

¿Cómo optimizar las pruebas con el método setup?

El método setup evita la creación repetitiva de instancias en cada test. Para lograr esto:

  • Se crea una instancia de cuenta en setup.
  • La cuenta creada se comparte entre todas las pruebas usando self.

Esto simplifica las pruebas al evitar duplicar el código de instanciación en cada método de test.

¿Cómo ejecutar las pruebas de retiro y consulta de saldo?

Para las pruebas de retiro y consulta de saldo:

  • El método withdraw debe restar la cantidad del saldo y validar que el resultado sea correcto.
  • El método get_balance simplemente valida que el saldo actual coincida con lo esperado.

Estas pruebas se benefician del uso de setup, ya que reutilizan la misma instancia de cuenta creada para cada prueba.

¿Cómo ejecutar pruebas con salida más detallada?

Al ejecutar las pruebas, es útil utilizar el comando con la opción -b para obtener una salida más detallada y visualizar exactamente qué pruebas se están ejecutando y dónde están ubicadas en el código. Esto ayuda a depurar y tener un mejor control sobre el flujo de las pruebas.

¿Cómo crear pruebas para una nueva funcionalidad de transferencia?

La tarea final consiste en agregar un método de transferencia a la clase BankAccount, el cual debe:

  • Permitir transferir saldo entre cuentas.
  • Levantar una excepción si el saldo no es suficiente para realizar la transferencia.

Luego, se deben crear dos pruebas unitarias:

  1. Validar que la transferencia se realiza correctamente.
  2. Validar que se lanza una excepción cuando no hay saldo suficiente para completar la transferencia.