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

Código de Testes da erro!

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!
5 respostas

Você pode me mandar um print de como estão suas pastas no pytcharm?

Se estiver assim deveria funcionar sem problema: Imagem mostrando as pastas no pycharm Caso esteja igual a minha manda a foto de qualquer maneira e tenta rodar pelo vsc ou pelo terminal/cmd e me diz se funcionou, se funcionou sem problema é o pycharm dando problema, se não funcionou vamos descobrir qual o motivo.

Está dessa forma

solução!

Uma duvida, esse seu dominio.py que você ta editando é o mesmo dominio.py que está dentro dessa pasta testes-python-projeto-inicial? Pelo path que ta dando nesse teu dominio.py ai tu ta com o arquivo do testes-python-aula-4 aberto e não o dominio.py que você gostaria. Da uma olhada nisso ai. na parte superior esquerda ta mostrando C:\Users\Meg\AppData\Local\Temp\...\src\leilao\dominio.py quando teoricamente deveria ser C:\Users\Meg\Documents\testes-python-projeto-inicial\src\leilao\dominio.py

Vlw Luigi, esse arquivo era baixado, porque o meu pycharm deu uma pane, e apagou o meu dominio.py e colocou outro código nele, ai eu tinha baixado, ai agora eu copiei e colei o dominio.py no dominio.py do src que tinha sido apagado, e parou de acusar erro, porém quando rodo os testes continua falhando, vou tentar fazer funcionar, senão retorno aqui, vlw

Dá esse erro quando tento rodar os testes do test_Usuario.py

C:\Users\Meg\Documents\testes-python-projeto-inicial\venv\Scripts\python.exe "C:\Users\Meg\Nova pasta\PyCharm Community Edition 2020.3\plugins\python-ce\helpers\pycharm_jb_pytest_runner.py" --path C:/Users/Meg/Documents/testes-python-projeto-inicial/tests/test_Usuario.py Testing started at 16:03 ... Launching pytest with arguments C:/Users/Meg/Documents/testes-python-projeto-inicial/tests/test_Usuario.py in C:\Users\Meg\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\Meg\Documents\testes-python-projeto-inicial\venv\Scripts\python.exe cachedir: .pytest_cache rootdir: C:\Users\Meg\Documents\testes-python-projeto-inicial\tests collecting ... test_Usuario.py:None (test_Usuario.py) test_Usuario.py:1: in from src.leilao.dominio import Usuario, Leilao ..\src\leilao\dominio.py:1: in class Usuario: ..\src\leilao\dominio.py:11: in Usuario lance = Lance(self, valor) E NameError: name 'Lance' is not defined collected 0 items / 1 error

=================================== ERRORS ==================================== __ ERROR collecting test_Usuario.py ___ test_Usuario.py:1: in from src.leilao.dominio import Usuario, Leilao ..\src\leilao\dominio.py:1: in class Usuario: ..\src\leilao\dominio.py:11: in Usuario lance = Lance(self, valor) E NameError: name 'Lance' is not defined =========================== short test summary info =========================== ERROR test_Usuario.py - NameError: name 'Lance' is not defined !!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!! ============================== 1 error in 1.03s ===============================

Process finished with exit code 2

Assertion failed

Assertion failed

Tais erros são acusados no dominio.py:
Unresolved reference 'Lance'
Unresolved reference 'self'
Unresolved reference 'valor'
Unresolved reference 'leilao'
Unresolved reference 'self'
Unresolved reference 'valor'

no entanto tais classes estão presentes no código, como corrigir isso? desde já obrigado!

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