2
respostas

Ainda Permanece Erro em test_leilao.py

Quando rodo o test_leilao.py, ainda permanece 3 erros:

primeiro:

FAILED [ 28%]

1 != 2

Expected :2 Actual :1

self = <tests.test_leilao.TestLeilao testMethod=test_deve_permitir_propor_um_lance_caso_o_ultimo_usuario_seja_diferente> first = 2, second = 1, msg = None

def _patched_equals(self, first, second, msg=None):
    try:
      old(self, first, second, msg)

......\Nova pasta\PyCharm Community Edition 2020.3\plugins\python-ce\helpers\pycharm\teamcity\diff_tools.py:32:

segundo:

FAILED [ 42%]

100.0 != 150.0

Expected :150.0 Actual :100.0

self = <tests.test_leilao.TestLeilao testMethod=test_deve_retornar_o_maior_e_o_menor_valor_de_um_lance_quando_adicionados_em_ordem_crescente> first = 150.0, second = 100.0, msg = None

def _patched_equals(self, first, second, msg=None):
    try:
      old(self, first, second, msg)

......\Nova pasta\PyCharm Community Edition 2020.3\plugins\python-ce\helpers\pycharm\teamcity\diff_tools.py:32:

Terceiro:

FAILED [ 57%]

100.0 != 200.0

Expected :200.0 Actual :100.0

self = <tests.test_leilao.TestLeilao testMethod=test_deve_retornar_o_maior_e_o_menor_valor_quando_o_leilao_tiver_tres_lance_> first = 200.0, second = 100.0, msg = None

def _patched_equals(self, first, second, msg=None):
    try:
      old(self, first, second, msg)

......\Nova pasta\PyCharm Community Edition 2020.3\plugins\python-ce\helpers\pycharm\teamcity\diff_tools.py:32:

2 respostas

esse é o código do test_leilao.py:


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


class TestLeilao(TestCase):

    def setUp(self):
        self.alexandre = Usuario('Alexandre', 500.0)
        self.lance_do_alexandre = Lance(self.alexandre, 150.0)
        self.leilao = Leilao('Cavalo')

    def test_deve_retornar_o_maior_e_o_menor_valor_de_um_lance_quando_adicionados_em_ordem_crescente(self):
        ryu = Usuario('Ryu', 500.0)
        lance_do_ryu = Lance(ryu, 100.0)

        self.leilao.propoe(lance_do_ryu)
        self.leilao.propoe(self.lance_do_alexandre)

        menor_valor_esperado = 100.0
        maior_valor_esperado = 150.0

        self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
        self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)

    def test_nao_deve_permitir_propor_um_lance_em_ordem_decrescente(self):
        with self.assertRaises(LanceInvalido):
            ryu = Usuario('Ryu', 500.0)
            lance_do_ryu = Lance(ryu, 100.0)

            self.leilao.propoe(self.lance_do_alexandre)
            self.leilao.propoe(lance_do_ryu)

    def test_deve_retornar_o_mesmo_valor_para_o_maior_e_menor_lance_quando_leilao_tiver_um_lance(self):
        self.leilao.propoe(self.lance_do_alexandre)

        self.assertEqual(150.0, self.leilao.menor_lance)
        self.assertEqual(150.0, self.leilao.menor_lance)

    def test_deve_retornar_o_maior_e_o_menor_valor_quando_o_leilao_tiver_tres_lance_(self):
        ryu = Usuario('Ryu', 500.0)
        lance_do_ryu = Lance(ryu, 100.0)
        marston = Usuario('Marston', 500.0)

        lance_do_marston = Lance(marston, 200.0)

        self.leilao.propoe(lance_do_ryu)
        self.leilao.propoe(self.lance_do_alexandre)
        self.leilao.propoe(lance_do_marston)

        menor_valor_esperado = 100.0
        maior_valor_esperado = 200.0

        self.assertEqual(menor_valor_esperado, self.leilao.menor_lance)
        self.assertEqual(maior_valor_esperado, self.leilao.maior_lance)

    def test_deve_permitir_propor_um_lance_caso_o_leilao_nao_tenha_lances(self):
        self.leilao.propoe(self.lance_do_alexandre)

        quantidades_de_lances_recebido = len(self.leilao.lances)
        self.assertEqual(1, quantidades_de_lances_recebido)

    # se o ultimo usuario for diferente, deve permitir propor o lance
    def test_deve_permitir_propor_um_lance_caso_o_ultimo_usuario_seja_diferente(self):
        ryu = Usuario("ryu", 500.0)
        lance_do_ryu = Lance(ryu, 200.0)

        self.leilao.propoe(self.lance_do_alexandre)
        self.leilao.propoe(lance_do_ryu)

        quantidades_de_lances_recebido = len(self.leilao.lances)

        self.assertEqual(2, quantidades_de_lances_recebido)

    # se o ultimo usuario for o mesmo, não deve permitir propor o lance
    def test_nao_deve_permitir_propor_lance_caso_o_usuario_seja_o_mesmo(self):
        lance_do_alexandre200 = Lance(self.alexandre, 200.0)

        with self.assertRaises(LanceInvalido):
            self.leilao.propoe(self.lance_do_alexandre)
            self.leilao.propoe(lance_do_alexandre200)

O dominio.py permanece da mesma maneira.

Desde já obrigado a paciência Renovada! :)

Olá Lucas, tudo bem com você?

Peço desculpas pela demora em lhe responder.

Em simulação com os códigos do arquivo test_leilao.py, todos os testes passaram, os testes foram realizados em conjunto com o do arquivo dominio.py utilizado na aula.

Simulando os erros apresentados, temos alguns pontos que podem levar a falha dos testes, abaixo listo os pontos de conferência no arquivo dominio.py.

Para o teste: test_deve_permitir_propor_um_lance_caso_o_ultimo_usuario_seja_diferente

O erro de falha do teste (1 != 2) indica que o teste recebeu um lance mas esperava dois lances, gerando a falha do teste. Peço que verifique o método _usuarios_diferentes da classe Leilão, esse método deverá retornar True caso os usuários sejam diferentes, verifique se o retorno foi declarado nesta parte do código, como apresentado abaixo:

def _usuarios_diferentes(self, lance):
    if self.__lances[-1].usuario != lance.usuario:
        return True
    raise LanceInvalido('O mesmo usuário não pode dar dois lances seguidos')

Para o teste: test_deve_retornar_o_maior_e_o_menor_valor_de_um_lance_quando_adicionados_em_ordem_crescente

O erro de falha do teste (100.0 != 150.0), indica que o teste esperava receber um valor de lance igual a 150 mas recebeu 100. Peço que verifique o método _valor_maior_que_lance_anterior da classe Leilao, esse método deverá retornar True caso o valor do lance atual for maior que o lance anterior, verifique se o retorno foi declarado como True, como apresentado abaixo:

def _valor_maior_que_lance_anterior(self, lance):
    if lance.valor > self.__lances[-1].valor:
        return True
    raise LanceInvalido('O Valor do lance deve ser maior que o do lance anterior')

Para o teste: test_deve_retornar_o_maior_e_o_menor_valor_quando_o_leilao_tiver_tres_lance_

Semelhante ao teste anterior, o erro de falha do teste (100.0 != 200.0), indica que o teste esperava receber um valor de lance igual a 200 mas recebeu 100. Peço que verifique o método _valor_maior_que_lance_anterior da classe Leilao, esse método deverá retornar True caso o valor do lance atual for maior que o lance anterior, verifique se o retorno foi declarado como True.

As correções propostas foram realizadas testando o código em conjunto com o código apresentado na aula, caso o erro persista ou apresente outros erros, peço que envie o código completo do arquivo dominio.py, para que possa ser realizado os testes com o código.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!