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?
 
            