fork download
  1. # Pruebas de unidad - Cuenta bancaria (c) 2024 Baltasar MIT License <baltasarq@gmail.com>
  2.  
  3.  
  4. import unittest
  5.  
  6.  
  7. class CuentaBancaria:
  8. def __init__(self):
  9. self.__saldo = 0
  10.  
  11. @property
  12. def saldo(self):
  13. return self.__saldo
  14.  
  15. def ingresa(self, x):
  16. self.__saldo += x
  17.  
  18. def retira(self, x):
  19. if ( x > self.saldo):
  20. raise ValueError("retirada superior al saldo")
  21.  
  22. self.__saldo -= x
  23.  
  24. def __str__(self):
  25. return str(self.__saldo)
  26.  
  27.  
  28. class TestCuentaBancaria(unittest.TestCase):
  29. def setUp(self):
  30. self._cuenta = CuentaBancaria()
  31.  
  32. def test_ingresos(self):
  33. ingresos = [20, 30, 400, 1200, 45]
  34. total_ingresos = sum(ingresos)
  35.  
  36. for ingreso in ingresos:
  37. saldo_actual = self._cuenta.saldo
  38. self._cuenta.ingresa( ingreso )
  39. self.assertEqual( saldo_actual + ingreso, self._cuenta.saldo)
  40.  
  41. self.assertEqual(total_ingresos, self._cuenta.saldo)
  42.  
  43. def test_retiradas(self):
  44. ingreso_inicial = 10000
  45. retiradas = [100, 10, 15, 25, 800, 300, 250]
  46. total_retiradas = sum(retiradas)
  47. self._cuenta.ingresa(ingreso_inicial)
  48.  
  49. for retirada in retiradas:
  50. saldo_actual = self._cuenta.saldo
  51. self._cuenta.retira(retirada)
  52. self.assertEqual(saldo_actual - retirada, self._cuenta.saldo)
  53.  
  54. self.assertEqual(ingreso_inicial - total_retiradas, self._cuenta.saldo)
  55.  
  56. def test_saldo_negativo(self):
  57. self._cuenta.ingresa(1000)
  58. with self.assertRaises(ValueError):
  59. self._cuenta.retira(1500)
  60.  
  61.  
  62. if __name__ == "__main__":
  63. unittest.main()
  64.  
Success #stdin #stdout #stderr 0.05s 11732KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
...
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK