Skip to content

Commit

Permalink
🆒(#80): Testes unitários do Regex
Browse files Browse the repository at this point in the history
  • Loading branch information
BrunoHDuarte2 committed Dec 2, 2023
1 parent cbf3bf9 commit 3fe3eff
Show file tree
Hide file tree
Showing 6 changed files with 129 additions and 12 deletions.
36 changes: 25 additions & 11 deletions Camada_Dados/Regex.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,13 +88,21 @@ def __init__(self):
]
def extrair_nome_municipio(self, bloco):
# Extrair nome do município com flexibilidade para padrões diferentes
padrao = re.compile(r'\b(?:' + '|'.join(map(re.escape, self.nome_dos_municipios)) + r')\b(?! \w)', re.IGNORECASE)
texto_sem_duplo_espacamento = re.sub(r'\s+', ' ', bloco )
correspondencias = padrao.findall(texto_sem_duplo_espacamento)
if correspondencias:
return correspondencias[0]
else:
return "Publicado por Gabinete ou afins"
padrao = re.compile(r'\b(?:' + '|'.join(map(re.escape, self.nome_dos_municipios)) + r')\b', re.IGNORECASE)

# Encontrar correspondências no texto
correspondencias = padrao.findall(bloco)

# Verificar se "Rio Grande" está presente nas correspondências
if 'Rio Grande' in correspondencias:
# Encontrar a posição da palavra "Rio Grande" no texto
posicao_rio_grande = bloco.find('Rio Grande')
# Verificar se a palavra "do Sul" segue "Rio Grande"
if posicao_rio_grande != -1 and bloco[posicao_rio_grande + len('Rio Grande'):].strip().startswith('do Sul'):
return correspondencias[1]
else:
return "Rio Grande"


def escrita_data_base(self, dados, arquivo):
print(arquivo)
Expand All @@ -120,9 +128,9 @@ def extrair_dados(self, nome_do_arquivo, arq_salvo):
contexto = texto[inicio_contexto:fim_contexto]
# Chamada do Spacy para extração do nome do nomeado/exonerado

"""print("Correspondência:", correspondencia.group())

print("Contexto:", contexto)
print("-----")"""


# Restante do seu código aqui
nome_do_municipio = self.extrair_nome_municipio(contexto)
Expand Down Expand Up @@ -155,5 +163,11 @@ def extrai_geral(self, ano_extraido, arq_salvo):
self.extrair_dados(arq_path, arq_salvo)




diretorio_atual = os.path.dirname(os.path.abspath(__file__))
caminho_atual = os.path.abspath(os.path.join(diretorio_atual, '..'))
arq_path = f'{caminho_atual}/Camada_Dados/txt/testes/2030-12-30.txt'
open(f'{caminho_atual}/teste_extracao.json', 'w').close()
with open(f'{caminho_atual}/teste_extracao.json', 'w') as file:
file.write("[\n\n]")
regex = Extrator_de_dados()
regex.extrair_dados(arq_path,f'{caminho_atual}/teste_extracao.json')
Binary file modified Camada_Dados/__pycache__/Regex.cpython-310.pyc
Binary file not shown.
10 changes: 10 additions & 0 deletions Camada_Dados/txt/testes/2030-12-30.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Estado do Rio Grande do Sul

Contextualização ficticia para uma nomeação ficticia que será usada para
testar a funcionalidade de um método criado no arquivo Regex.py. Então
nesse arquivo por aparecer a palavra chave NOMEIA ele irá quebrar ao redor
dessa palavra em 400 caracteres para cima e para baixo da palavra e deve
escrever num arquivo os dados que filtrar nesse texto. Os dados são: o nome
do município, a data que será com base onde esse arquivo estará salvo e se há
nomeação ou exoneração nesse bloco, nesse caso suponhamos que essa ação foi
realizada por Ibirubá.
10 changes: 10 additions & 0 deletions Camada_Dados/txt/testes/2030-12-31.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Estado do Rio Grande do Sul

Contextualização ficticia para uma nomeação ficticia que será usada para
testar a funcionalidade de um método criado no arquivo Regex.py. Então
nesse arquivo por aparecer a palavra chave EXONERA ele irá quebrar ao redor
dessa palavra em 400 caracteres para cima e para baixo da palavra e deve
escrever num arquivo os dados que filtrar nesse texto. Os dados são: o nome
do município, a data que será com base onde esse arquivo estará salvo e se há
nomeação ou exoneração nesse bloco, nesse caso suponhamos que essa ação foi
realizada por Travesseiro.
Binary file modified Testes/__pycache__/test_Regex.cpython-310-pytest-7.4.3.pyc
Binary file not shown.
85 changes: 84 additions & 1 deletion Testes/test_Regex.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,91 @@ def test_escrita_database(self):

with open(f'{caminho_atual}/testeRegex.json', 'r') as arquivo:
dados_lidos = json.load(arquivo)

self.assertEqual(dados_lidos[0], dados_ficticios)

os.remove(f'{caminho_atual}/testeRegex.json')
def test_estrair_nome_municipio_final(self):
diretorio_atual = os.path.dirname(os.path.abspath(__file__))
caminho_atual = os.path.abspath(os.path.join(diretorio_atual, '..'))
arq_path = f'{caminho_atual}/Camada_Dados/txt/testes/2030-12-30.txt'
with open(arq_path) as file:
texto = file.read()
print(texto)
self.assertEqual(self.extrator.extrair_nome_municipio(texto), "Ibirubá")
os.remove(f'{caminho_atual}/teste_extracao.json')


def test_extrair_dados_nomeacao(self):
diretorio_atual = os.path.dirname(os.path.abspath(__file__))
caminho_atual = os.path.abspath(os.path.join(diretorio_atual, '..'))
arq_path = f'{caminho_atual}/Camada_Dados/txt/testes/2030-12-30.txt'
open(f'{caminho_atual}/teste_extracao.json', 'w').close()
with open(f'{caminho_atual}/teste_extracao.json', 'w') as file:
file.write("[\n\n]")
self.extrator.extrair_dados(arq_path, f'{caminho_atual}/teste_extracao.json')

dados_esperados = {
"nomeMunicipio": "Ibirubá",
"dataPost": "2030-12-30",
"haNomeacao": True,
"haExoneracao": False
}

with open(f'{caminho_atual}/teste_extracao.json', 'r') as arquivo:
dados_lidos = json.load(arquivo)

self.assertEqual(dados_lidos[0], dados_esperados)
os.remove(f'{caminho_atual}/teste_extracao.json')

def test_extrair_dados_exoneracao(self):
diretorio_atual = os.path.dirname(os.path.abspath(__file__))
caminho_atual = os.path.abspath(os.path.join(diretorio_atual, '..'))
arq_path = f'{caminho_atual}/Camada_Dados/txt/testes/2030-12-31.txt'
open(f'{caminho_atual}/teste_extracao.json', 'w').close()
with open(f'{caminho_atual}/teste_extracao.json', 'w') as file:
file.write("[\n\n]")
self.extrator.extrair_dados(arq_path, f'{caminho_atual}/teste_extracao.json')

dados_esperados = {
"nomeMunicipio": "Travesseiro",
"dataPost": "2030-12-31",
"haNomeacao": False,
"haExoneracao": True
}

with open(f'{caminho_atual}/teste_extracao.json', 'r') as arquivo:
dados_lidos = json.load(arquivo)

self.assertEqual(dados_lidos[0], dados_esperados)
os.remove(f'{caminho_atual}/teste_extracao.json')

def test_extrair_geral(self):
diretorio_atual = os.path.dirname(os.path.abspath(__file__))
caminho_atual = os.path.abspath(os.path.join(diretorio_atual, '..'))

open(f'{caminho_atual}/teste_extracao.json', 'w').close()
with open(f'{caminho_atual}/teste_extracao.json', 'w') as file:
file.write("[\n\n]")

self.extrator.extrai_geral(ano_extraido="testes", arq_salvo= f'{caminho_atual}/teste_extracao.json')

dados_esperados_nomeacao = {
"nomeMunicipio": "Ibirubá",
"dataPost": "2030-12-30",
"haNomeacao": True,
"haExoneracao": False
}
dados_esperados_exoneracao = {
"nomeMunicipio": "Travesseiro",
"dataPost": "2030-12-31",
"haNomeacao": False,
"haExoneracao": True
}
with open(f'{caminho_atual}/teste_extracao.json') as arquivo:
dados = json.load(arquivo)
self.assertEqual(dados_esperados_nomeacao, dados[0])
self.assertEqual(dados_esperados_exoneracao, dados[1])
os.remove(f'{caminho_atual}/teste_extracao.json')
if __name__ == '__main__':
unittest.main()

0 comments on commit 3fe3eff

Please sign in to comment.