from src.leilao.dominio import Usuario, Leilao
import pytest
@pytest.fixture def marston(): return Usuario("Marston", 100.0)
@pytest.fixture def leilao(): return Leilao("Cavalo")
def test_deve_subtrair_valor_da_carteira_do_usuario_quando_este_propor_um_lance(marston, leilao): marston.propoe_lance(leilao, 50.0)
assert marston.carteira == 50.0
def test_deve_permitir_propor_lance_quando_o_valor_rh_menor_que_o_valor_da_carteira(marston, leilao): marston.propoe_lance(leilao, 1.0)
assert marston.carteira == 99.0
def test_deve_permitir_propor_lance_quando_o_valor_eh_igual_ao_valor_da_carteira(marston, leilao): marston.propoe_lance(leilao, 100.0)
assert marston.carteira == 0.0
def test_nao_deve_permitir_propor_lance_com_valor_maior_que_o_da_carteira(marston, leilao): with pytest.raises(ValueError):
leilao = Leilao("Cavalo")
marston.propoe_lance(leilao, 200.0)
quando vejo os erros diz:
Cannot find reference 'Usuario' in dominio.py
Cannot find reference 'Leilao' in dominio.py
mas como isso é possivel?
ja que em dominio.py, todas a referencias se encontram:
class Usuario:
def __init__(self, nome, carteira):
self.__nome = nome
self.__carteira = carteira
def propoe_lance(self, leilao, valor):
if self._valor_eh_valido(valor):
raise ValueError('Não pode propor um lance com o valor maior que o valor da carteira')
lance = Lance(self, valor)
leilao.propoe(lance)
self.__carteira -= valor
@property
def nome(self):
return self.__nome
@property
def carteira(self):
return self.__carteira
def _valor_eh_valido(self, valor):
return valor > 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 = 0.0
self.menor_lance = 0.0
def propoe(self, lance: Lance):
if self._lance_eh_valido(lance):
if not self._tem_lances():
self.menor_lance = lance.valor
self.maior_lance = lance.valor
self.__lances.append(lance)
else:
raise ValueError('Erro ao propor lance')
@property
def lances(self):
return self.__lances[:]
def _tem_lances(self):
return self.__lances
def _usuarios_diferentes(self, lance):
return self.__lances[-1].usuario != lance.usuario
def _valor_maior_que_lance_anterior(self, lance):
return lance.valor > self.__lances[-1].valor
def _lance_eh_valido(self, lance):
return not self._tem_lances() or (self._usuarios_diferentes(lance) and
self._valor_maior_que_lance_anterior(lance))
o mesmo caso acontece no test_leilao.py
diz não encontrar a referencia Usuario, Leilao, Lance
porém as mesmas se encontram em dominio.py como mostrei.
o que pode ser? desde já obrigado!