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

ValueError not raised

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[:]
1 resposta
solução!

Olá Ian, tudo certo?

Neste seu método:

# codigo omitido

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)

# codigo omitido

Você está inserindo primeiro o lance com o valor de 100.0 e depois o lance com valor de 150.0. Basta inverter a ordem de inserção:


# codigo omitido

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(self.lance_do_gui)
            self.leilao.propoe(lance_do_yuri)


# codigo omitido

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