Season Libraries - Ep. 08: Library Process - Verificação de conteúdo de arquivo PDF

 
Olááá Robotizadores!!! Hoje eu vou mostrar um exemplo de como realizar a conferência dos dados de um arquivo PDF, através da execução de um código Python externo via Library Process. Let's bora?




#FICADICA: Lembrando que é necessário que você já tenha uma noção sobre o Robot Framework!!! Se ainda não tem, dá uma olhadinha nos primeiros posts do blog ou no curso da Udemy!!!


01 - Instalando o código para extração dos dados

pip install pdfminer.six

As Libraries OperatingSystem e Process utilizadas no exemplo não requerem instalação, elas já vem embutidas na instalação do Robot.

02 - Escreva seu código no Robot Framework

Segue abaixo um exemplo de um código usando o PDF Miner, esse exemplo foi feito com base no cenário que funcionou no meu ambiente, talvez seja necessários ajustes para funcionar no seu ambiente.


*** Settings ***
Documentation PDF para Texto
... Link do Projeto de Mineração de PDF: https://github.com/avedensky/pdfminer.six/blob/master/tools/pdf2txt.py
... Link para a Documentação da Library Process: https://robotframework.org/robotframework/latest/libraries/Process.html
Library OperatingSystem
Library Process
*** Test Cases ***
PDF para Texto
O usuario confere os dados do PDF
*** Keywords ***
O usuario confere os dados do PDF
#Montando o caminho completo do arquivo PDF
${home_dir}= normalize path ~
${download_dir}= Join Path ${home_dir} Downloads
@{items}= OperatingSystem.List Directory ${download_dir} CTFL_foundation_page.pdf
${file}= Join Path ${download_dir} ${items[0]}
#Extração dos Dados do PDF
${PDF_EXTRACT_TEXT}= Process.Run Process pdf2txt.py ${file} shell=yes alias=myproc
${stdout} ${stderr}= Get Process Result myproc stdout=yes stderr=yes
#Armazenando Saída no Log
Log To Console ${SPACE}
Log To Console ${SPACE}
Log To Console ${stdout}
Log To Console ${SPACE}
Log ${stdout}
#Conferência dos Dados Exportados
${Texto} Should Contain ${stdout} CTFL Foundation

03 - Detalhamento do Exemplo

Passo 1 - Como o caminho do usuário local, muda de máquina para máquina, foi utilizada a Keyword "Normalize Path" para normalizá-lo, esse processo faz especificamente as seguintes coisas: 

  • Recolhe separadores redundantes e referências de nível superior.
  • Converte / para \ no Windows.
  • Substitui ~ ou ~user pelo diretório inicial do usuário.

O caminho obtido foi colocado dentro da variável ${home_dir} 

Passo 2 - Foi utilizado a Keyword "Join Path" para realizar a concatenação do caminho obtido na variável ${home_dir} com o diretório onde encontra-se o arquivo.

Passo 3 - Foi utilizado a Keyword "List Directory" para filtrar todos os arquivos que contenham uma determinada nomenclatura. Essa keyword tem como resultado uma lista de arquivos, a qual deve ser armazenada em uma variável do tipo lista. Para saber mais sobre tipos de variáveis, leia o artigo "Season Scripts - Ep. 03: Tipos de variáveis e seu uso".

Passo 4 - Novamente foi utilizado a Keyword "Join Path", só que dessa vez ela concatenou o caminho obtido no passo 2 com o nome do arquivo obtido no passo 3. 

Passo 5 - Agora será utilizada a Keyword "Run Process" para rodar o código Python que foi instalado para extrair o conteúdo do arquivo PDF.

Passo 6 - Por fim será utilizada a Keyword "Get Process Result" para capturar a saída do processo.

Passos 7 e 8 - A utilização das Keywords "Log" e "Log To Console" são opcionais, contudo em caso de erro, elas serão de grande auxílio.

Passo 9 - Para finalizar o teste, foi utilizada a keyword "Should Contain" para verificar se o texto extraído do PDF, contém o conteúdo esperado.


Visualização detalhada das keywords de Extração dos Dados do PDF

04 - Considerações sobre a Execução

A execução ocorre em segundo plano, ou seja, ele não abre nenhum terminal extra durante os testes, contudo se você usar a keyword "Log To Console" apontando para saída do processo, ela poderá ser visualizada no terminal que está executando os testes. 




E aí o que acharam???? O exemplo supracitado está disponível no meu GitHub ... Abraço robotizadores!!! See you later!

Comentários

Postar um comentário

Postagens mais visitadas deste blog

[ATUALIZADO] Season Libraries - Ep. 01: Library Faker para informações aleatórias e fakes

Novo Curso: Robot Framework com Playwright e GitHub Actions

Season API Testing - Ep. 04: "401 unauthorized"  —  Agora é a hora de deixar o Robot entrar