Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

esse teste não passa o que pode ser?

quando rodo este teste:

def test_deve_subtrair_valor_da_carteira_do_usuario_quando_este_propor_um_lance(): marston = Usuario("Marston", 100.0)

leilao = Leilao('Celular')

marston.propoe_lance(Leilao, 50.0)

assert marston.carteira == 50.0

isso acontece:

C:\Users\Lucas\Documents\testes-python-projeto-inicial\venv\Scripts\python.exe "C:\Users\Lucas\Nova pasta\PyCharm Community Edition 2020.3\plugins\python-ce\helpers\pycharm\_jb_pytest_runner.py" --target test_Usuario.py::test_deve_subtrair_valor_da_carteira_do_usuario_quando_este_propor_um_lance

Testing started at 16:57 ... Launching pytest with arguments test_Usuario.py::test_deve_subtrair_valor_da_carteira_do_usuario_quando_este_propor_um_lance in C:\Users\Lucas\Documents\testes-python-projeto-inicial\tests

============================= test session starts ============================= platform win32 -- Python 3.9.1, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 -- C:\Users\Lucas\Documents\testes-python-projeto-inicial\venv\Scripts\python.exe cachedir: .pytest_cache rootdir: C:\Users\Lucas\Documents\testes-python-projeto-inicial\tests collecting ... collected 1 item

test_Usuario.py::test_deve_subtrair_valor_da_carteira_do_usuario_quando_este_propor_um_lance FAILED [100%] test_Usuario.py:9 (test_deve_subtrair_valor_da_carteira_do_usuario_quando_este_propor_um_lance) def test_deve_subtrair_valor_da_carteira_do_usuario_quando_este_propor_um_lance(): marston = Usuario("Marston", 100.0)

    leilao = Leilao('Celular')
  marston.propoe_lance(Leilao, 50.0)

test_Usuario.py:15:


self = <src.leilao.dominio.Usuario object at 0x000001EF0B5FCD60> leilao = <class 'src.leilao.dominio.Leilao'>, valor = 50.0

def propoe_lance(self, leilao, valor):
    if valor > self.__carteira:
        raise ValueError("Não pode propor um lance com o valor maior que o valor da carteira")

    lance = Lance(self, valor)
  leilao.propoe(lance)

E TypeError: propoe() missing 1 required positional argument: 'lance'

..\src\leilao\dominio.py:15: TypeError

================================== FAILURES =================================== _ test_deve_subtrair_valor_da_carteira_do_usuario_quando_este_propor_um_lance _

def test_deve_subtrair_valor_da_carteira_do_usuario_quando_este_propor_um_lance():
    marston = Usuario("Marston", 100.0)

    leilao = Leilao('Celular')
  marston.propoe_lance(Leilao, 50.0)

test_Usuario.py:15:


self = <src.leilao.dominio.Usuario object at 0x000001EF0B5FCD60> leilao = <class 'src.leilao.dominio.Leilao'>, valor = 50.0

def propoe_lance(self, leilao, valor):
    if valor > self.__carteira:
        raise ValueError("Não pode propor um lance com o valor maior que o valor da carteira")

    lance = Lance(self, valor)
  leilao.propoe(lance)

E TypeError: propoe() missing 1 required positional argument: 'lance'

..\src\leilao\dominio.py:15: TypeError =========================== short test summary info =========================== FAILED test_Usuario.py::test_deve_subtrair_valor_da_carteira_do_usuario_quando_este_propor_um_lance ============================== 1 failed in 3.62s ==============================

Process finished with exit code 1

Assertion failed

Assertion failed

esse é o meu dominio.py

def carteira(self):
    return self.__carteira

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: Lance): #Teremos o método propoe() e por meio do if, um lance será válido se a lista de leilões estiver vazia ou se o usuário do último lance for diferente do anterior. Agora, além disso, o lance deverá ser válido também, ou seja, e (and) se o valor dele for maior do que o valor do lance do último usuário.
    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("Erro ao propor lance")

@property
def lances(self):
    return self.__lances[:]
2 respostas
solução!

Quando vc coloca:

  marston.propoe_lance(Leilao, 50.0)

Vc está passando a classe leilão (com o L maiusculo). Acredito q sua intenção seja passar uma instancia dele:

leilao = Leilao('Celular')
marston.propoe_lance(leilao, 50.0)

Valeu Tmj!

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