File size: 1,970 Bytes
c1b16e4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import unittest
from unittest.mock import patch, MagicMock
from app import extrair_texto, processar_texto, chat_inteligente
import os
class TestAcceptance(unittest.TestCase):
"""
Simula o fluxo completo do usuário:
1. Upload de arquivo
2. Extração de texto
3. Processamento de NLU
4. Pergunta via Chat
"""
@patch('app.nlu.analyze')
@patch('app.obter_iam_token')
@patch('app.requests.post')
def test_full_user_flow(self, mock_post, mock_token, mock_analyze):
# 1. Setup
test_filename = "user_doc.txt"
content = "Este é um documento de teste sobre Watsonx AI."
with open(test_filename, "w", encoding="utf-8") as f:
f.write(content)
try:
# 2. Extração
texto = extrair_texto(test_filename)
self.assertEqual(texto, content)
# 3. Análise NLU (Mocking)
mock_analyze.side_effect = [
MagicMock(get_result=lambda: {'summarization': {'text': 'Resumo'}}),
MagicMock(get_result=lambda: {'keywords': [{'text': 'watsonx'}]}),
MagicMock(get_result=lambda: {'categories': [{'label': '/tech'}]})
]
resumo, topicos, classificacao = processar_texto(texto)
self.assertEqual(resumo, "Resumo")
# 4. Chat (Mocking)
mock_token.return_value = "token123"
mock_resp = MagicMock()
mock_resp.status_code = 200
mock_resp.json.return_value = {'choices': [{'message': {'content': 'Resposta da IA'}}]}
mock_post.return_value = mock_resp
resposta = chat_inteligente("O que é Watsonx?", texto)
self.assertEqual(resposta, "Resposta da IA")
finally:
if os.path.exists(test_filename):
os.remove(test_filename)
if __name__ == "__main__":
unittest.main()
|