erro
Failure
Traceback (most recent call last):
File "C:\Users\Ian\AppData\Local\Programs\Python\Python37-32\lib\unittest\case.py", line 59, in testPartExecutor
yield
File "C:\Users\Ian\AppData\Local\Programs\Python\Python37-32\lib\unittest\case.py", line 615, in run
testMethod()
File "C:\Users\Ian\PycharmProjects\treinamento-de-testes\test_leilao.py", line 31, in test_n_deve_permitir_propor_um_lance_em_ordem_decrecente
self.leilao.propoe(self.lance_do_gui)
File "C:\Users\Ian\AppData\Local\Programs\Python\Python37-32\lib\unittest\case.py", line 203, in __exit__
self._raiseFailure("{} not raised".format(exc_name))
File "C:\Users\Ian\AppData\Local\Programs\Python\Python37-32\lib\unittest\case.py", line 135, in _raiseFailure
raise self.test_case.failureException(msg)
AssertionError: ValueError not raised
test_leilao.py
from unittest import TestCase
from dominio import Usuario, Leilao, Lance
class TestLeilao(TestCase):
def setUp(self):
self.gui = Usuario('gui')
self.lance_do_gui = Lance(self.gui, 150.00)
self.leilao = Leilao('celular')
def test_deve_retornar_maior_e_o_menor_lance_em_ordem_crecente(self):
self.yuri = Usuario('yuri')
self.lance_do_yuri = Lance(self.yuri, 100.00)
self.leilao.propoe(self.lance_do_yuri)
self.leilao.propoe(self.lance_do_gui)
self.assertEqual(100.00,self.leilao.menor_lance)
self.assertEqual(150.00, self.leilao.maior_lance)
def test_n_deve_permitir_propor_um_lance_em_ordem_decrecente(self):
with self.assertRaises(ValueError):
yuri = Usuario('yuri')
lance_do_yuri = Lance(yuri, 100.00)
self.leilao.propoe(lance_do_yuri)
self.leilao.propoe(self.lance_do_gui)
def test_deve_retornar_o_mesmo_valor_para_o_maior_e_menor_lance(self):
self.leilao.propoe(self.lance_do_gui)
self.assertEqual(150.00, self.leilao.menor_lance)
self.assertEqual(150.00, self.leilao.maior_lance)
def test_deve_retornar_maior_e_menor_lance_quando_tiver_tres_lances(self):
yuri = Usuario('yuri')
lance_do_yuri = Lance(yuri, 100.00)
viny = Usuario('viny')
lance_do_viny = Lance(viny,200.00)
self.leilao.propoe(lance_do_yuri)
self.leilao.propoe(self.lance_do_gui)
self.leilao.propoe(lance_do_viny)
self.assertEqual(100.00, self.leilao.menor_lance)
self.assertEqual(200.00, self.leilao.maior_lance)
def deve_propor_um_lance_caso_leilao_nao_tenha_lance(self):
self.leilao.propoe(self.lance_do_gui)
quandidade_de_lances_recebidos = len(self.leilao.lances)
self.assertEqual(1,quandidade_de_lances_recebidos)
def test_deve_premidir_propro_um_lance_caso_o_ultimo_usuario_seja_diferente(self):
yuri = Usuario('Yuri')
lance_do_yuri = Lance(yuri,200.0)
self.leilao.propoe(self.lance_do_gui)
self.leilao.propoe(lance_do_yuri)
quantidade_de_lances_recebido = len(self.leilao.lances)
self.assertEqual(2,quantidade_de_lances_recebido)
def test_nao_deve_permitir_propor_lance_caso_o_usuario_seja_o_mesmo(self):
lance_do_gui_200 = Lance(self.gui,200.00)
with self.assertRaises(ValueError):
self.leilao.propoe(self.lance_do_gui)
self.leilao.propoe(lance_do_gui_200)
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 = []
self.maior_lance = sys.float_info.min
self.menor_lance = sys.float_info.max
def propoe(self,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('o mesmo usuario não pode propor do lances seguidos')
@property
def lances(self):
return self.__lances[:]