Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Método não está funcionando

Prezados,

O método que escrevi está igual ao do vídeo 3 (Mais testes e classes de equivalência) apresentado, porém aqui para mim da o erro no menor valor, pois mostra que ele é 1.7976... e o valor a ser comparado é 150. Seguem códigos:

Código classes:

import  sys
class Usuario:
    def __init__(self, nome):
        self.__nome = nome

    @property
    def nome(self):
        return self.__nome


class Lance:
    def __init__(self, usuario, valor):
        self.usuario = usuario
        self.valor = valor


class Leilao:
    def __init__(self, descricao):
        self.descricao = descricao
        self.__lances = []

    @property
    def lances(self):
        return self.__lances

class Avaliador:
    def __init__(self):
        self.maior_lance = sys.float_info.min
        self.menor_lance = sys.float_info.max

    def avalia(self, leilao: 'Espera receber um leilao'):
        for lance in leilao.lances:
            if(lance.valor > self.maior_lance):
                self.maior_lance = lance.valor

            elif(lance.valor < self.menor_lance):
                self.menor_lance = lance.valor

Código teste

from unittest import TestCase
from src.leilao.dominio import Usuario, Lance, Leilao, Avaliador

  def test_deve_retornar_o_mesmo_valor_para_o_maior_e_menor_lance_quando_leilao_tiver_um_lance(self):
        gui = Usuario('gui'.capitalize())

        lance_gui = Lance(gui, 150.00)

        leiao_celular = Leilao('celular'.capitalize())
        leiao_celular.lances.append(lance_gui)

        avaliador = Avaliador()
        avaliador.avalia(leiao_celular)

        self.assertEqual(150.00, avaliador.menor_lance)
        self.assertEqual(150.00, avaliador.maior_lance)

Obrigado.

1 resposta
solução!

Olá! O problema ai está no método avalia(). Quando recebe um lance.valor maior do que o self.maior_lance, ele pula o elif e não avalia o menor lance.. Então pra corrigir isso vc tem que substituir o elif por outro if Aliás, ele falou isso em algum vídeo ai pra trás, vc deve ter pulado hehehe

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software