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

Erro no teste: 100.0 != 150

Lá vou eu. Rodei 3x já aqui e não acho o que está errado. Meu teste está dando erro:

"C:\Program Files\Python39\python.exe" "C:\Program Files\JetBrains\PyCharm Community Edition 2020.3.3\plugins\python-ce\helpers\pycharm\_jb_unittest_runner.py" --target test_avaliador.TestAvaliador.test_avalia
Testing started at 22:04 ...
Launching unittests with arguments python -m unittest test_avaliador.TestAvaliador.test_avalia in C:\Users\Sea Group\OneDrive\Alura\python_9_-_testes_automatizados_tdd

100.0 != 150

Expected :150
Actual   :100.0
<Click to see difference>

Traceback (most recent call last):
  File "C:\Users\Sea Group\OneDrive\Alura\python_9_-_testes_automatizados_tdd\test_avaliador.py", line 26, in test_avalia
    self.assertEqual(maior_valor_esperado, avaliador.menor_lance)
AssertionError: 150 != 100.0

Ran 1 test in 0.003s

FAILED (failures=1)

Process finished with exit code 1

dominio.py

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: Leilao):
        for lance in leilao.lances:
            if lance.valor > self.maior_lance:
                self.maior_lance = lance.valor
            if lance.valor < self.menor_lance:
                self.menor_lance = lance.valor

principal.py

from dominio import Usuario, Lance, Leilao, Avaliador

vini = Usuario('Vini')
panai = Usuario('Panai')

lance_vini = Lance(vini, 100.0)
lance_panai = Lance(panai, 150.0)

leilao = Leilao('Celular')

leilao.lances.append(lance_vini)
leilao.lances.append(lance_panai)

for lance in leilao.lances:
    print(f'{lance.usuario.nome} deu um lance de R${lance.valor}')

avaliador = Avaliador()
avaliador.avalia(leilao)

print(f'O menor lance foi de {avaliador.menor_lance} e o maior lance foi de {avaliador.maior_lance}')

test_avaliador.py

from unittest import TestCase
from dominio import Usuario, Lance, Leilao, Avaliador


class TestAvaliador(TestCase):

    def test_avalia(self):
        vini = Usuario('Vini')
        panai = Usuario('Panai')

        lance_vini = Lance(vini, 100.0)
        lance_panai = Lance(panai, 150.0)

        leilao = Leilao('Celular')

        leilao.lances.append(lance_vini)
        leilao.lances.append(lance_panai)

        avaliador = Avaliador()
        avaliador.avalia(leilao)

        menor_valor_esperado = 100
        maior_valor_esperado = 150

        self.assertEqual(menor_valor_esperado, avaliador.menor_lance)
        self.assertEqual(maior_valor_esperado, avaliador.menor_lance)
1 resposta
solução!

Aaaaaaaaaaaaa nada como uma boa noite de sono para deixar o modo difuso da cabeça trabalhar e pensar no problema. Agora cedo, em 30 segundos, achei o erro!

  self.assertEqual(menor_valor_esperado, avaliador.menor_lance)
  self.assertEqual(maior_valor_esperado, avaliador.menor_lance)

eu coloquei para no maior valor esperado, puxar o menor lance aiaiaiaia

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