4
respostas

Problemas em importar o Pytest

Olá, eu instalei o pytest e consegui chegar até este ponto, com todos os testes tendo sucesso, mas quando tento importar o pytest para usar o raises() aparece a mensagem 'unable to import pytest.

Estou fazendo o exercício no vscode e tive problemas em importar alguns arquivos. Alguns só funcionaram após criar o arquivo init.py em cada pasta. No pycharm tive um problema e quando tentei pegar o passo da aula em diante ele dava um problema no interpretador do python. Não consegui configurar.

Este é o código do meu teste de usuário:

from src.leilao.dominio import Usuario, Leilao
import pytest

def test_deve_subtrair_valor_da_carteira_do_usuario_quando_este_propor_um_lance():
  eurico = Usuario('eurico', 100.0)

  leilao = Leilao('celular')

  eurico.propoe_lance(leilao, 50.0)

  assert eurico.carteira == 50.0

def test_deve_permitir_propor_lance_quando_valor_menor_do_que_saldo_na_carteira():
  eurico = Usuario('eurico', 100.0)

  leilao = Leilao('celular')

  eurico.propoe_lance(leilao, 1.0)

  assert eurico.carteira == 99.0

def test_deve_permitir_propor_lance_quando_valor_e_igual_ao_saldo_na_carteira():
  eurico = Usuario('eurico', 100.0)

  leilao = Leilao('celular')

  eurico.propoe_lance(leilao, 100.0)

  assert eurico.carteira == 0

def test_nao_deve_permitir_propor_lance_com_valor_superior_ao_saldo_da_carteira():
  with pytest.raises(ValueError):
    eurico = Usuario('eurico', 100.0)

    leilao = Leilao('celular')

    eurico.propoe_lance(leilao, 200.0)

o erro do meu console é o seguinte:

/usr/local/lib/python2.7/site-packages/_pytest/python.py:507: in _importtestmodule
    mod = self.fspath.pyimport(ensuresyspath=importmode)
/usr/local/lib/python2.7/site-packages/py/_path/local.py:701: in pyimport
    __import__(modname)
/usr/local/lib/python2.7/site-packages/_pytest/assertion/rewrite.py:304: in load_module
    exec(co, mod.__dict__)
tests/test_usuario.py:1: in <module>
    from src.leilao.dominio import Usuario, Leilao
E     File "/Users/eurico_cruz/Documents/Alura/Python/testes-python-aula-04/src/leilao/dominio.py", line 19
E   SyntaxError: Non-ASCII character '\xc3' in file /Users/eurico_cruz/Documents/Alura/Python/testes-python-aula-04/src/leilao/dominio.py on line 19, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

É possível me ajudar?

4 respostas

Eurico,

Bom dia amigo, vc tem que ler as msg de erro é pesquisar o seu problema melhor. Na realidade seu problema não é a importação do pytest, mas;

SyntaxError: Non-ASCII character '\xc3' in file /Users/eurico_cruz/Documents/Alura/Python/testes-python-aula-04/src/leilao/dominio.py on line 19, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

Quando você coloca algum caractere acentuado no seu programa, por exemplo “á”, um aviso é mostrado na execução, aparece o erro acima, principalmente quando se trabalha com o Python2.7 no projeto. A codificação ASCII é o padrão para códigos fonte, então é preciso avisar o Python que seus fontes usam outra. Para o português é ISO-8859-1, ou seu similar mais curto latin-1, ou ainda melhor usando o UTF-8 para ficar o mais inclusivo. Para resolver definitivamente seu "problema" basta colocar um comentário especial na primeira ou segunda linha do código:

# -*- coding: utf-8 -*-

OBS: O Python 2.7 não será mantido após 2020 . Originalmente, não havia data oficial. Recentemente, essa data foi atualizada para 1º de janeiro de 2020. Neste site abaixo, vc acompanha o CONTDOWN:

Python 2.7 Countdown

Boa tarde Welton! infelizmente este problema realmente só acontecia quando eu pedia para importar o Pytest. Para conseguir resolver este problema eu instalei o virtualenv e rodei a aplicação dentro da configuração do python3, assim consegui rodar os testes e importar o pytest. Mesmo com a solução que você me passou não consegui rodar fora do virtualenv. Obrigado pela ajuda Welton.

Eurico,

Para o erro acima, o problema não é o Pytest, vc pode disponibilizar os arquivos no git para eu fazer os testes e ajudar com mais clareza.

Desculpe a demora Welton, segue aqui meu código. https://github.com/EuricoCruz/pytest-alura

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