Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Teste com 'três lances' falhando

Bom dia,

Rodei os testes com pytest dos test_leilao e todos passaram exceto o teste com três lances e não consegui identificar o porquê, já que anteriormente estava passando normalmente com o unittest.

Consegue me ajudar, Yuri?

FAILED
test_leilao.py:66 (TestLeilao.test_deve_retornar_o_maior_e_menor_valor_quando_o_leilao_tiver_tres_lances)
self = <testes.test_leilao.TestLeilao testMethod=test_deve_retornar_o_maior_e_menor_valor_quando_o_leilao_tiver_tres_lances>

    def test_deve_retornar_o_maior_e_menor_valor_quando_o_leilao_tiver_tres_lances(self):

        yuri = Usuario('Yuri', 500.0)
        vini = Usuario('Vini', 500.0)

        lance_yuri = Lance(yuri, 100.0)

        lance_vini = Lance(vini, 200.0)

        self.leilao.propoe(self.lance_gui)
>       self.leilao.propoe(lance_yuri)

test_leilao.py:77: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <src.dominio.Leilao object at 0x037DB6A0>
lance = <src.dominio.Lance object at 0x037DB790>

    def propoe(self, lance: Lance):
        if not self.__lances or self.__lances[-1].usuario != lance.usuario and lance.valor > self.__lances[-1].valor:
            if lance.valor > self.maior_lance:
                self.maior_lance = lance.valor
            if lance.valor < self.menor_lance:
                self.menor_lance = lance.valor

            self.__lances.append(lance)
        else:
>           raise ValueError("Erro ao propor o lance!")
E           ValueError: Erro ao propor o lance!

..\src\dominio.py:49: ValueError

O código completo desse teste está como:

  def test_deve_retornar_o_maior_e_menor_valor_quando_o_leilao_tiver_tres_lances(self):

        yuri = Usuario('Yuri', 500.0)
        vini = Usuario('Vini', 500.0)

        lance_yuri = Lance(yuri, 100.0)
        lance_vini = Lance(vini, 200.0)

        self.leilao.propoe(self.lance_gui)
        self.leilao.propoe(lance_yuri)
        self.leilao.propoe(lance_vini)

        menor_valor_esperado = 100.0
        maior_valor_esperado = 200.0

        self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
        self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)
2 respostas
solução!

Olá Fredirico.

Acredito que o problema está porque o lance do Yuri que é de 100 é menor que o lance do Gui que é de 150 e nosso código tem essa restrição que o lance deve ser sempre maior que o anterior (lance.valor > self.__lances[-1].valor)

 if not self.__lances or self.__lances[-1].usuario != lance.usuario and lance.valor > self.__lances[-1].valor:

E assim estamos caindo na exceção

 else:
           raise ValueError("Erro ao propor o lance!")

Para corrigir recomendo mudar a ordem dos lances.

self.leilao.propoe(lance_yuri)
self.leilao.propoe(self.lance_gui)
self.leilao.propoe(lance_vini)

Me diga se isso resolve esse problema, mas qualquer coisa poste o erro aqui que vou te ajudar.

Bons Estudos.

Perfeito. Era isso mesmo, Igor.

Obrigado!