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

Programação OO

Bom dia.

Estou com uma dúvida em relação ao

  • test_nao_deve_permitir_propor_um_lance_em_ordem_decrescente De acordo com a programação do caso de teste, e da classe de teste temos:

def test_nao_deve_permitir_propor_um_lance_em_ordem_decrescente(self):

    with self.assertRaises(ValueError):
        self.leilao.propoe(self.lance_do_paul) #350 <= valor do lance de Paul
        self.leilao.propoe(self.lance_do_yuri) #100 <= valor do lance de Yuri

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 lance.')

Executando este testcase a execução não está falhando, porém os lances foram dados em ordem decrescente: primeiro 350.0 e depois 100.0

Invertendo a ordem dos lances assim: self.leilao.propoe(self.lance_do_yuri) #100 <= valor do lance de Yuri self.leilao.propoe(self.lance_do_paul) #350 <= valor do lance de Paul

o teste quebra...

No código do professor, está da mesma forma...

O lance do Yuri é 100.0 e do Gui é 150.0 e o teste está passando apesar de primeiro ser feito o lance para o Gui e depois para Yuri.

3 respostas

Olá Otavio,

Acho que o código está correto, pois a regra que está sendo testada é:

Se forem informados valores em ordem decrescente, deve ser lançada uma exceção.

Como isto está acontecendo (está sendo lançada uma exceção), o teste passa. Ou seja, o que está sendo testado não é uma situação em que o código funciona, mas sim uma situação na qual ele deve tratar um possível erro.

Espero ter ajudado.

Abraço!

solução!

Olá Otavio, tudo bem? Sua dúvida foi esclarecida?

Opa Otavio,

Como você já marcou como solucionado, estou fechando seu tópico.

Caso tenha uma nova dúvida basta abrir um novo!

Abraços!