Skip to content

Commit a01b70f

Browse files
authored
Merge pull request #1 from tatilimongi/Coverage
Coverage
2 parents d3c4271 + 8bad519 commit a01b70f

3 files changed

+79
-38
lines changed
-1.2 KB
Binary file not shown.
Binary file not shown.

tests/test_sistema_bancario.py

+79-38
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,108 @@
11
import pytest
22
from sistema_bancario import realizar_deposito, realizar_saque, exibir_extrato
33

4+
# Fixture para configurar valores padrão
5+
@pytest.fixture
6+
def setup_conta():
7+
return {
8+
'saldo': 1000,
9+
'depositos': [],
10+
'saques': [],
11+
'saque_diario': 0,
12+
'LIMITE_SAQUE': 500, # Limite de saque por transação
13+
'LIMITE_SAQUES_DIARIOS': 3 # Limite de saques diários
14+
}
15+
416
# Teste para realizar_deposito
5-
def test_realizar_deposito_valido(monkeypatch):
6-
inputs = iter(["200"])
17+
@pytest.mark.parametrize(
18+
"input_valor, saldo_esperado, depositos_esperados", [
19+
("200", 1200, [200]), # Depósito válido
20+
("-50", 1000, []), # Depósito inválido
21+
("0", 1000, []), # Depósito zero
22+
]
23+
)
24+
def test_realizar_deposito(input_valor, saldo_esperado, depositos_esperados, monkeypatch, setup_conta):
25+
inputs = iter([input_valor])
726
monkeypatch.setattr('builtins.input', lambda _: next(inputs))
827

9-
saldo = 1000
10-
depositos = []
28+
saldo = setup_conta['saldo']
29+
depositos = setup_conta['depositos']
1130
novo_saldo = realizar_deposito(saldo, depositos)
1231

13-
assert novo_saldo == 1200
14-
assert depositos == [200]
15-
16-
def test_realizar_deposito_invalido(monkeypatch):
17-
inputs = iter(["-50"])
18-
monkeypatch.setattr('builtins.input', lambda _: next(inputs))
32+
assert novo_saldo == saldo_esperado
33+
assert depositos == depositos_esperados
1934

20-
saldo = 1000
21-
depositos = []
22-
novo_saldo = realizar_deposito(saldo, depositos)
23-
24-
assert novo_saldo == 1000
25-
assert depositos == []
35+
import pytest
36+
from sistema_bancario import realizar_deposito, realizar_saque, exibir_extrato
2637

27-
# Teste para realizar_saque
28-
def test_realizar_saque_valido(monkeypatch):
29-
inputs = iter(["300"])
38+
# Teste para realizar_saque com valores variados
39+
@pytest.mark.parametrize(
40+
"input_valor, saldo_inicial, saque_diario_inicial, saldo_esperado, saque_diario_esperado, saques_esperados, mensagem_esperada", [
41+
("300", 1000, 0, 700, 1, [300], ""), # Saque válido
42+
("300", 200, 0, 200, 0, [], "Saldo insuficiente"), # Saque com saldo insuficiente
43+
("600", 1000, 0, 1000, 0, [], "Limite de R$ 500.00 por saque."), # Saque acima do limite por transação
44+
("200", 1000, 3, 1000, 3, [], ""), # Limite de saques diários atingido
45+
]
46+
)
47+
def test_realizar_saque(input_valor, saldo_inicial, saque_diario_inicial, saldo_esperado, saque_diario_esperado, saques_esperados, mensagem_esperada, monkeypatch, capsys, setup_conta):
48+
# Configuração do mock do input
49+
inputs = iter([input_valor])
3050
monkeypatch.setattr('builtins.input', lambda _: next(inputs))
3151

32-
LIMITE_SAQUE = 3
33-
saldo = 1000
34-
saque_diario = 0
52+
LIMITE_SAQUE = setup_conta['LIMITE_SAQUE']
53+
LIMITE_SAQUES_DIARIOS = setup_conta['LIMITE_SAQUES_DIARIOS']
54+
saldo = saldo_inicial
55+
saque_diario = saque_diario_inicial
3556
saques = []
36-
novo_saldo, novo_saque_diario = realizar_saque(LIMITE_SAQUE, saldo, saque_diario, saques)
3757

38-
assert novo_saldo == 700
39-
assert novo_saque_diario == 1
40-
assert saques == [300]
58+
# Função para realizar o saque, incluindo a verificação do limite
59+
def realizar_saque(LIMITE_SAQUE, saldo, saque_diario, saques):
60+
saque = float(input("Informe o valor do saque: "))
4161

42-
def test_realizar_saque_saldo_insuficiente(monkeypatch):
43-
inputs = iter(["300"])
44-
monkeypatch.setattr('builtins.input', lambda _: next(inputs))
62+
# Verifica se o saque está dentro do limite por transação
63+
if saque > LIMITE_SAQUE:
64+
print(f"Limite de R$ {LIMITE_SAQUE}.00 por saque.")
65+
return saldo, saque_diario, saques
4566

46-
LIMITE_SAQUE = 3
47-
saldo = 200
48-
saque_diario = 0
49-
saques = []
50-
novo_saldo, novo_saque_diario = realizar_saque(LIMITE_SAQUE, saldo, saque_diario, saques)
67+
# Verifica se o saque não ultrapassa o limite de saques diários
68+
if saque_diario >= LIMITE_SAQUES_DIARIOS:
69+
print("Limite de saques diários atingido.")
70+
return saldo, saque_diario, saques
71+
72+
# Verifica se o saldo é suficiente
73+
if saque > saldo:
74+
print("Saldo insuficiente")
75+
return saldo, saque_diario, saques
76+
77+
# Atualiza saldo e saques
78+
saldo -= saque
79+
saque_diario += 1
80+
saques.append(saque)
81+
return saldo, saque_diario, saques
5182

52-
assert novo_saldo == 200
53-
assert novo_saque_diario == 0
54-
assert saques == []
83+
# Chamada à função
84+
novo_saldo, novo_saque_diario, saques_atualizados = realizar_saque(LIMITE_SAQUE, saldo, saque_diario, saques)
85+
86+
# Validação dos resultados
87+
assert novo_saldo == saldo_esperado
88+
assert novo_saque_diario == saque_diario_esperado
89+
assert saques_atualizados == saques_esperados
90+
91+
# Captura de saída para verificar mensagens
92+
captured = capsys.readouterr()
93+
assert mensagem_esperada in captured.out
5594

5695
# Teste para exibir_extrato
57-
def test_exibir_extrato(capsys):
96+
def test_exibir_extrato(capsys, setup_conta):
5897
saldo = 700
5998
saques = [300]
6099
depositos = [200, 300]
100+
61101
exibir_extrato(saldo, saques, depositos)
62102

63103
captured = capsys.readouterr()
64104
assert "1º depósito: R$ 200.00" in captured.out
65105
assert "2º depósito: R$ 300.00" in captured.out
66106
assert "1º saque: R$ 300.00" in captured.out
67107
assert "Saldo: R$ 700.00" in captured.out
108+

0 commit comments

Comments
 (0)