print('=' * 25) x = str(input('Digite o Número da Conta: ')) y = str(input('Nome do Cliente: ')) print(f'{"Bem vindo(a)!":^25}') print(f'O que deseja fazer hoje {y}?') cliente1 = Banco(x, y) while True: print('''Para extrato digite 1 Para saque digite 2 Para deposito digite 3 Para sair digite 000''') print('=' * 25) x = int(input('Opção desejada: ')) print('=' * 25) if x == 1: cliente1.extrato() print('=' * 25) elif x == 2: cliente1.sacar() print('=' * 25) elif x == 3: cliente1.depositar() print('=' * 25) elif x == 000: print('Tenha um ótimo dia, até mais.') break else: print('Opção inválida, tente novamente.')
class TestCajeros(unittest.TestCase): def setUp(self): self.banco = Banco("Seguritas") self.rut1 = "18.375.852-2" self.nombre1 = "Alberto Rodriguez" self.clave1 = 2345 self.rut2 = "13.432.113-k" self.nombre2 = "Fernanda Pereira" self.clave2 = 5912 self.banco.agregar_usuario(self.rut1, self.nombre1, self.clave1) self.banco.agregar_usuario(self.rut2, self.nombre2, self.clave2) self.cajero = CajeroAutomatico(self.banco) def test_credenciales(self): # primer caso: rut y clave correctos self.cajero.login(self.rut1, self.clave1) rutingresado = self.banco.usuarioactual.rut self.assertEqual(self.rut1, rutingresado) # segundo caso: rut correcto pero clave incorrecta self.cajero.login(self.rut1, 1234) self.assertIsNone(self.banco.usuarioactual) # tercer caso: rut no está en la base de datos del banco self.cajero.login("10.000.000-1", 1234) self.assertIsNone(self.banco.usuarioactual) def test_dinero_disponible(self): self.cajero.retirar_dinero(self.rut1, self.clave1, 20000) saldo = self.banco.usuarioactual.saldo # el usuario debería tener saldo 0, ya que nunca ha depositado self.assertEqual(0, saldo) # el test falla y se aprecia que el saldo queda en -20.000 cuando # debería ser 0 def test_monto_actualizado(self): self.cajero.login(self.rut1, self.clave1) # se depositan 10.000 pesos self.banco.depositar(self.banco.usuarioactual, 10000) # se retiran 5.000 pesos self.cajero.retirar_dinero(self.rut1, self.clave1, 5000) saldo = self.banco.usuarioactual.saldo # deberían quedar 5.000 pesos en el saldo self.assertEqual(5000, saldo) def test_cuenta_tercero(self): # trataremos de transferir a una cuenta que no existe self.cajero.login(self.rut1, self.clave1) self.banco.depositar(self.banco.usuarioactual, 10000) self.cajero.transferir_dinero( self.rut1, self.clave1, "1.000.000-3", 5000) self.assertIsNone(self.banco.usuariotercero) # efectivamente el usuario al que se le va transferir no se crea y no # es encontrado def test_montos_actualizados(self): self.cajero.login(self.rut1, self.clave1) # a la cuenta 1 se le deposita 15.0000 self.banco.depositar(self.banco.usuarioactual, 15000) # la cuenta 1 le transfiere 5.000 a la cuenta 2 self.cajero.transferir_dinero(self.rut1, self.clave1, self.rut2, 3000) # la cuenta 1 queda con 12.000 y la cuenta 2 con 3.000. Comprobémoslo montoUsuario = self.banco.usuarioactual.saldo montoTercero = self.banco.usuariotercero.saldo # cuenta 1 tiene 12.000 self.assertEqual(montoUsuario, 12000) # cuenta 2 tiene 3.000 self.assertEqual(montoTercero, 3000) # vemos que no se cumple que el tercero tenga 3.000 (de hecho tiene 0) # concluimos que a la cuenta 1 se le retiran 3.000 pero a la # cuenta 2 no están llegando los 3.000 # Falla el test def test_comprobar_error(self): # un error que podría pasar es que el tercero no exista self.cajero.login(self.rut1, self.clave1) # a la cuenta 1 se le deposita 10.0000 self.banco.depositar(self.banco.usuarioactual, 10000) # transferimos a una cuenta que no existe self.cajero.transferir_dinero( self.rut1, self.clave1, "1.000.000-3", 5000) # verifiquemos que no se hace la transferencia montoUsuario = self.banco.usuarioactual.saldo self.assertEqual(montoUsuario, 10000)
class TestCajeros(unittest.TestCase): def setUp(self): self.banco = Banco("Seguritas") self.rut1 = "18.375.852-2" self.nombre1 = "Alberto Rodriguez" self.clave1 = 2345 self.rut2 = "13.432.113-k" self.nombre2 = "Fernanda Pereira" self.clave2 = 5912 self.banco.agregar_usuario(self.rut1, self.nombre1, self.clave1) self.banco.agregar_usuario(self.rut2, self.nombre2, self.clave2) self.cajero = CajeroAutomatico(self.banco) def test_credenciales(self): # primer caso: rut y clave correctos self.cajero.login(self.rut1, self.clave1) rutingresado = self.banco.usuarioactual.rut self.assertEqual(self.rut1, rutingresado) # segundo caso: rut correcto pero clave incorrecta self.cajero.login(self.rut1, 1234) self.assertIsNone(self.banco.usuarioactual) # tercer caso: rut no está en la base de datos del banco self.cajero.login("10.000.000-1", 1234) self.assertIsNone(self.banco.usuarioactual) def test_dinero_disponible(self): self.cajero.retirar_dinero(self.rut1, self.clave1, 20000) saldo = self.banco.usuarioactual.saldo # el usuario debería tener saldo 0, ya que nunca ha depositado self.assertEqual(0, saldo) # el test falla y se aprecia que el saldo queda en -20.000 cuando # debería ser 0 def test_monto_actualizado(self): self.cajero.login(self.rut1, self.clave1) # se depositan 10.000 pesos self.banco.depositar(self.banco.usuarioactual, 10000) # se retiran 5.000 pesos self.cajero.retirar_dinero(self.rut1, self.clave1, 5000) saldo = self.banco.usuarioactual.saldo # deberían quedar 5.000 pesos en el saldo self.assertEqual(5000, saldo) def test_cuenta_tercero(self): # trataremos de transferir a una cuenta que no existe self.cajero.login(self.rut1, self.clave1) self.banco.depositar(self.banco.usuarioactual, 10000) self.cajero.transferir_dinero(self.rut1, self.clave1, "1.000.000-3", 5000) self.assertIsNone(self.banco.usuariotercero) # efectivamente el usuario al que se le va transferir no se crea y no # es encontrado def test_montos_actualizados(self): self.cajero.login(self.rut1, self.clave1) # a la cuenta 1 se le deposita 15.0000 self.banco.depositar(self.banco.usuarioactual, 15000) # la cuenta 1 le transfiere 5.000 a la cuenta 2 self.cajero.transferir_dinero(self.rut1, self.clave1, self.rut2, 3000) # la cuenta 1 queda con 12.000 y la cuenta 2 con 3.000. Comprobémoslo montoUsuario = self.banco.usuarioactual.saldo montoTercero = self.banco.usuariotercero.saldo # cuenta 1 tiene 12.000 self.assertEqual(montoUsuario, 12000) # cuenta 2 tiene 3.000 self.assertEqual(montoTercero, 3000) # vemos que no se cumple que el tercero tenga 3.000 (de hecho tiene 0) # concluimos que a la cuenta 1 se le retiran 3.000 pero a la # cuenta 2 no están llegando los 3.000 # Falla el test def test_comprobar_error(self): # un error que podría pasar es que el tercero no exista self.cajero.login(self.rut1, self.clave1) # a la cuenta 1 se le deposita 10.0000 self.banco.depositar(self.banco.usuarioactual, 10000) # transferimos a una cuenta que no existe self.cajero.transferir_dinero(self.rut1, self.clave1, "1.000.000-3", 5000) # verifiquemos que no se hace la transferencia montoUsuario = self.banco.usuarioactual.saldo self.assertEqual(montoUsuario, 10000)
class Servidor(): def __init__(self): self.conexao = None self.serv = None self.banco = Banco() self.iniciar() self.menu() def iniciar(self): host = 'localhost' port = 8000 addr = (host, port) serv_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) serv_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) serv_socket.bind(addr) serv_socket.listen(10) print('aguardando conexao...') con, client = serv_socket.accept() print(f'Conectado a {client}') self.conexao = con self.serv = serv_socket def recebe_dados(self): dados_recebidos = self.conexao.recv(1024).decode() dados = list(dados_recebidos.split(',')) #print(f'Recebido: {dados}') return dados def enviar_dados(self, dados): self.conexao.send(str(dados).encode()) print("Enviado!") def menu(self): ''' Metodo que recebe dados de um cliente e chama um metodo de acordo com o primeiro item: 1 - cadastra uma conta 2 - login 3 - Deposito 4 - Saque 5 - Extrato 6 - transferencia Se o primeiro item nao for uma das opcoes acima, a conexao com o cliente é encerrada ''' while True: d = self.recebe_dados() print(d) if d[0] == '1': self.cadastro(d) elif d[0] == '2': self.login(d) elif d[0] == '3': self.deposito(d) elif d[0] == '4': self.saque(d) elif d[0] == '5': self.extrato() elif d[0] == '6': self.transferencia(d) else: print('cliente encerrado') self.conexao = None print('aguardando conexao...') con, client = self.serv.accept() print(f'Conectado a {client}') self.conexao = con # lista: [1,cpf,nome,sobrenome,senha] def cadastro(self, d): if not self.banco._bd.busca(d[1]): if self.banco.cadastrar_conta(d[1], d[2], d[3], d[4]): numero = self.banco._bd.numero(d[1]) self.enviar_dados('True,{}'.format(numero)) else: self.enviar_dados('False') else: self.enviar_dados('False') #lista: [2,cpf,senha] def login(self, d): if self.banco.login(d[1], d[2]): dados = str(self.banco.conta_atual).strip('[]') self.enviar_dados(dados) else: self.enviar_dados(False) #lista: [3,valor] def deposito(self, d): d[1] = float(d[1]) dep = self.banco.depositar(d[1]) self.enviar_dados(dep) #lista: [4,valor] def saque(self, d): d[1] = float(d[1]) saq = self.banco.saque(d[1]) self.enviar_dados(saq) #lista = [5,cpf] def extrato(self): self.enviar_dados(self.banco.extrato()) #lista: [6,cpf_dest,valor] def transferencia(self, d): d[2] = float(d[2]) self.enviar_dados(self.banco.transfere(d[1], d[2]))