Pessoal, criei um cenário de teste com 4 lances e dois usuários. Segue abaixo os códigos:
EM DOMÍNIO
class Leilao:
def __init__(self, descricao):
self.descricao = descricao
self.__lances = []
self.maior_valor = sys.float_info.min
self.menor_valor = sys.float_info.max
def propoe(self, lance : Lance):
if not self.__lances or self.__lances[-1].usuario != lance.usuario and lance.valor > self.__lances[-1].valor:
if self.maior_valor < lance.valor:
self.maior_valor = lance.valor
if self.menor_valor > lance.valor:
self.menor_valor = lance.valor
self.__lances.append(lance)
else:
raise ValueError('Erro ao propor lance')
EM TESTE
def setUp(self):
self.usuario1 = Usuario("Andre")
self.usuario2 = Usuario("Miguel")
self.lance1 = Lance(self.usuario1, 100)
self.lance2 = Lance(self.usuario2, 150)
self.lance3 = Lance(self.usuario2, 300)
self.lance4 = Lance(self.usuario1, 350)
self.leilao = Leilao("Celuar")
def test_nao_deve_permitir_lance_quando_o_usuario_anterior_e_igual_ao_atual_2(self):
try:
self.leilao.propoe(self.lance1)
self.leilao.propoe(self.lance2)
self.leilao.propoe(self.lance3)
self.leilao.propoe(self.lance4)
except ValueError:
quantidade_de_lances_recebido = len(self.leilao.lances)
self.assertEqual(3, quantidade_de_lances_recebido)
E ao rodar, o teste me avisa a divergência entre a quantidade de lances recebidas (2) e o esperado (3). Porém, se vocês perceberem a ordem dos lances, apenas o lance3 não poderia ser executado, já que pertence a mesma pessoa do anterior.
Ao executar o mesmo teste, porém retirando o linha da classe leilao,
else: raise ValueError('Erro ao propor lance')
o meu teste retorna que 3 lances foram realizados.
Alguém sabe me dizer porque na 1° tentativa ocorreu essa divergência?