Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resolve #91 - PR de correção de Tests - assert_console #93

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 12 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ Pipfile
Pipfile.lock
.vscode/*
.idea/*
.tmp/*
.tmp
.pytest_cache/*
tests/discentes*
tests/main.py
venv/*
dist/*
build/*
Expand Down
6 changes: 3 additions & 3 deletions odufrn_downloader/modules/Env.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class Env(ABC):
MSG_ERRORS = {
'download_error': (
"Ocorreu algum erro durante o download do pacote."
"Verifique sua conexão, o nome do conjunto de dados"
"Verifique sua conexão, o nome do conjunto de dados "
"e tente novamente."
),
'none_package': 'Nenhum pacote foi encontrado',
Expand All @@ -34,11 +34,11 @@ def __init__(self):
def _print_exception(self, ex: Exception,
msg: str = MSG_ERRORS['download_error']):
"""Imprime mensagem padrão para exceções."""
print('\033[91m{}\033[0m'.format(ex))
print('\033[91m{}\033[0m'.format(type(ex).__name__))
print(msg)

def _print_not_found(self, name: str, type_name: str):
"""Imprime mensagem padrão para nome de dados não encontrados.
"""Imprime mensagem padrão para nomes de dados não encontrados.
"""
print('{} de dados "{}" não foi encontrado.'.format(type_name, name))

Expand Down
14 changes: 8 additions & 6 deletions tests/test_env.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,23 @@

class Env(unittest.TestCase):
def setUp(self):
""" Inicia novo objeto em todo os testes """
""" Inicia novo objeto em todos os testes """
self.ufrn_data = ODUFRNDownloader()
self.test_dir = 'temporary_test_dir'

def test_can_print_exception(self):
""" Verifica se uma exceção consegue ser printada no console """
assert_console(lambda: self.ufrn_data._print_exception(ValueError()))
assert_console(lambda: self.ufrn_data._print_exception(ValueError()),
"\033[91mValueError\033[0m\nOcorreu algum erro durante"
" o download do pacote.Verifique sua conexão, o nome do"
" conjunto de dados e tente novamente.\n")

def test_can_print_list(self):
def test_can_print_group_list(self):
""" Verifica se consegue-se printar informação da lista no console """
assert_console(
lambda: self.ufrn_data._print_list(
"conjuntos de dados", ['discente']
)
)
"grupos de dados", ['discente']
), "Os grupos de dados disponíveis são:\n['discente']\n")

def test_can_load_list(self):
""" Verifica se consegue carregar uma lista advinda de requisição """
Expand Down
6 changes: 3 additions & 3 deletions tests/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import sys
import shutil
import unittest
from odufrn_downloader import ODUFRNDownloader
from os.path import dirname, join, abspath
sys.path.insert(0, abspath(join(dirname(__file__), '..')))
from odufrn_downloader import ODUFRNDownloader


def input_value(fun):
Expand All @@ -17,8 +17,8 @@ def input_value(fun):
return capturedOutput.getvalue()


def assert_console(fun):
def assert_console(fun, message: str):
"""Recebe função que printa algo na tela e realiza assert
que verifica se foi printado."""
unit = unittest.TestCase()
return unit.assertTrue(len(input_value(fun)) > 0)
return unit.assertEqual(message, input_value(fun))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Essa função é utilizada em inúmeros testes do projeto, no qual, alguns não apresentam o parâmetro message, por isso os erros estão sendo apresentados no unittest pelo travis.

Sugiro fazer alguma verificação para checar o valor da mensagem.
Exemplo:

if message:
    return unit.assertEqual(message, input_value(fun))
else:
    # Coloque algo aqui
    pass

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Muito obrigado, vou verificar essa condição, não me atentei à esse caso,

Eu fiz um CTRL+F de "assert_console" e pensei que tinha encontrado todos os usos.
valeu

Copy link
Member

@johnazedo johnazedo Oct 7, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lembre de dar um valor padrão para o parâmetro, dessa forma não vai ser apontado erro caso estejam chamando o assert_console e não estiverem passando o valor do message.

Acredito que dessa forma seja mais fácil e mais correto do que a que eu apontei acima.

Copy link
Member

@itepifanio itepifanio Oct 7, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lembre de dar um valor padrão para o parâmetro, dessa forma não vai ser apontado erro caso estejam chamando o assert_console e não estiverem passando o valor do message.

Acredito que dessa forma seja mais fácil e mais correto do que a que eu apontei acima.

O ideal é que cada teste tenha sua mensagem verificada mesmo. Mas tem umas mensagens gigantescas, para verificar elas daria bastante trabalho, talvez até necessitasse criar arquivos de texto com as mensagens para comparar, algo a ser discutido, por enquanto deixar um valor default como mencionado por @johnazedo é o suficiente.