Escolar Documentos
Profissional Documentos
Cultura Documentos
Framework_____
Automação de Testes
Índice
Fases da construção do teste automatizado....................................................................................................4
Projeto base....................................................................................................................................................4
Estrutura diretórios:...................................................................................................................................4
Prompt.......................................................................................................................................................5
TestSitePractice.robot................................................................................................................................6
TestSitePracticeBDD.robot.......................................................................................................................7
Resource.robot...........................................................................................................................................9
results/log.html........................................................................................................................................12
results/report.html...................................................................................................................................13
Locators...................................................................................................................................................14
Trabalhando com variáveis:.........................................................................................................................15
BuiltIn......................................................................................................................................................15
Configuração de variáveis.......................................................................................................................15
Set Global Variable.............................................................................................................................15
Set Suite Variable................................................................................................................................15
Set Test Variable.................................................................................................................................15
Set Variable.........................................................................................................................................15
ExemplosEscoposVariaveis.robot...........................................................................................................16
Tipos de variáveis – Listas e dicionários.....................................................................................................17
Variáveis simples, lista e dicionários.......................................................................................................17
Utilização das variáveis...........................................................................................................................17
ExemplosTiposVariaveis.........................................................................................................................17
Variáveis como argumentos de keywords....................................................................................................18
ExemplosArgumentos.............................................................................................................................18
Estruturas do Robot Framework..................................................................................................................19
Logs.........................................................................................................................................................19
BuiltIn - Log.......................................................................................................................................19
UsandoLogs.robot..............................................................................................................................19
IF.............................................................................................................................................................20
BuiltIn - If...........................................................................................................................................20
UsandoIFs.robot.................................................................................................................................20
Loop For..................................................................................................................................................21
UsandoLoopsFor.robot.......................................................................................................................21
API testing com Robot Framework.............................................................................................................22
RequestsLibrary......................................................................................................................................22
Collections...............................................................................................................................................22
Automação de Testes com Robot Framework Básico de APIs...............................................................23
Anexo: Acessando o conteúdo do Response......................................................................................23
API..........................................................................................................................................................23
Código Exemplo......................................................................................................................................24
TestCasesAPIBooks.robot..................................................................................................................24
ResourceAPI.robot.............................................................................................................................24
BuiltIn Avançado..........................................................................................................................................26
Loops: Nova sintaxe do FOR e outras variações do FOR.......................................................................26
Controles: Teardowns Avançados............................................................................................................28
Controles: Lidando com falhas previstas................................................................................................29
Controles: Esperas e Timeout do teste....................................................................................................30
Argumentos: Argumentos avançados em keywords...............................................................................31
Evaluate...................................................................................................................................................32
Libraries Auxiliares......................................................................................................................................32
Library DateTime....................................................................................................................................32
Library OperatingSystem........................................................................................................................32
Library String..........................................................................................................................................32
Library Process........................................................................................................................................32
Pré-Requisito: Instalando um cliente de Banco de Dados......................................................................33
Library DatabaseLibrary.........................................................................................................................33
Conclusão: Libraries Auxiliares..............................................................................................................33
Menções Honrosas..................................................................................................................................33
Libraries Customizadas................................................................................................................................33
Estrutura dos diretórios...........................................................................................................................33
GeradorHash.py.......................................................................................................................................33
myLibrary.robot.......................................................................................................................................34
Robot Framework Básico
Fases da construção do teste automatizado
Projeto base
O projeto de teste, foi realizado a partir de 2 casos:
• TestSitePradtice.robot
Desenvolvimento baseado em casos de uso
• TestSitePracticeBDD.robot
Desenvolvimento baseado em BDD
Estrutura diretórios:
Prompt
TestSitePracticeBDD.robot
*** Settings ***
Resource ../resource/Resource.robot
Test Setup Abrir navegador
Test Teardown Fechar navegador
Então a tela do carrinho deve ser mostrada juntamente cos dados e valores do produto
Conferir se o produto "t-shirt" foi adicionado no carrinho com seus devidos dados e valores
Fechar navegador
Close Browser
#### Ações
Acessar a página home do site
Go To ${URL}
Wait Until Element Is Visible xpath=//*[@id="block_top_menu"]/ul
Title Should Be My Store
Passar o mouse por cima da categoria "${CATEGORIA}" no menu principal superior de categorias
Wait Until Element Is Visible xpath=//*[@id="block_top_menu"]//a[@title="${CATEGORIA}"]
Mouse Over xpath=//*[@id="block_top_menu"]//a[@title="${CATEGORIA}"]
Submeter cadastro
Click Button submitAccount
#### Conferências
Conferir se o produto "${PRODUTO}" foi listado no site
Wait Until Element Is Visible css=#center_column > h1
Title Should Be Search - My Store
Page Should Contain Image xpath=//*[@id="center_column"]//*[@src='${URL}/img/p/7/7-
home_default.jpg']
Page Should Contain Link xpath=//*[@id="center_column"]//a[@class="product-name"]
[contains(text(),"${PRODUTO}")]
Conferir se o produto "${PRODUTO}" foi adicionado no carrinho com seus devidos dados e valores
Wait Until Element Is Visible xpath=//*[@id="cart_title"][contains(text(),"Shopping-cart summary")]
Element Text Should Be xpath=//*[@class="cart_description"]/*[@class="product-name"]
Faded Short Sleeve T-shirts
Element Text Should Be xpath=//*[@class="cart_unit"]/*[@class="price"]/span $16.51
Element Text Should Be id=total_price $18.51
Configuração de variáveis
Configura a variável, e diz em qual escopo será utilizada
Set Variable
→ A variável "local" pode ser utilizada somente na keyword em execução
ExemplosEscoposVariaveis.robot
*** Settings ***
Documentation Exemplo de escopo de variáveis: GLOBAIS, SUITE, TESTE (test case) e LOCAL (keyword)
Library String
ExemplosTiposVariaveis
*** Settings ***
Documentation Exemplo de tipos de variáveis: SIMPLES, LISTAS e DICIONÁRIOS
*** Variable ***
#Simples
${SIMPLES} Vamos ver os tipos de variáveis no robot!
#Tipo Lista
@{FRUTAS} morango banana maça uva abacaxi
#Tipo Dicionário
&{PESSOA} nome=May Fernandes email=mayfernandes@exemplo.com.br idade=28 sexo=feminino
#Lista
Log Essa tem que ser maça: ${FRUTAS[2]} e essa tem que ser morango: ${FRUTAS[0]}
#Dicionário
Log Nome: ${PESSOA.nome} e email: ${PESSOA.email}
Variáveis como argumentos de keywords
ExemplosArgumentos
*** Variable ***
&{PESSOA} nome=May Fernandes email=mayfernandes@exemplo.com.br idade=12
sexo=feminino
UsandoLogs.robot
*** Settings ***
Documentation Suíte para exemplificar o uso de LOGs nos testes
... Os LOGs são de grande utilidade, faça LOGs para analisar como seu teste está sendo executado nas entrelinhas
... Os LOGs te ajudam a achar falhas na automação dos seus testes
... Use LOGs sem moderação!!
Library SeleniumLibrary
UsandoIFs.robot
*** Settings ***
Documentation Suíte para exemplificar o uso de IF nos testes
... O IF deve ser pouco utilizado, mas tem hora que não tem jeito
... e precisamos dele mesmo, então vamos ver como é!
... IF: use com moderação!
UsandoLoopsFor.robot
*** Settings ***
Documentation Vamos aprender a fazer LOOPS usando o Robot Framework!!
Usando FOR IN
Log To Console ${\n}
FOR ${FRUTA} IN @{MINHA_LISTA_DE_FRUTAS}
Log To Console Minha fruta é: ${FRUTA}!
No Operation
END
RequestsLibrary
http://marketsquare.github.io/robotframework-requests/doc/RequestsLibrary.html
Collections
http://robotframework.org/robotframework/latest/libraries/Collections.html
06. Para pegar o conteúdo do Body em formato específico, exemplo JSON (supondo que o seu retorno é
JSON): ${RESPOSTA.json()}
API
Exemplo didático: https://fakerestapi.azurewebsites.net/index.html
Código Exemplo
TestCasesAPIBooks.robot
*** Settings ***
Documentation Documentação da API: https://fakerestapi.azurewebsites.net/swagger/ui/index#!/Books
Resource ResourceAPI.robot
Suite Setup Conectar a minha API
ResourceAPI.robot
*** Settings ***
Documentation Documentação da API: https://fakerestapi.azurewebsites.net/swagger/ui/index#!/Books
Library RequestsLibrary
Library Collections
#### Ações
Requisitar todos os livros
${RESPOSTA} Get Request fakeAPI Books
Log ${RESPOSTA.text}
Set Test Variable ${RESPOSTA}
#### Conferências
Conferir o status code
[Arguments] ${STATUSCODE_DESEJADO}
Should Be Equal As Strings ${RESPOSTA.status_code} ${STATUSCODE_DESEJADO}
Conferir o reason
[Arguments] ${REASON_DESEJADO}
Should Be Equal As Strings ${RESPOSTA.reason} ${REASON_DESEJADO}
Aritmético
[Documentation] Percorre de 0 até 5
${var} Set Variable ${5}
FOR ${index} IN RANGE ${var} + 1
Log ${index}
END
Intervalos específicos
[Documentation] Percorre de 0 até 30, pulando de 5 em 5
FOR ${index} IN RANGE 0 31 5
Log ${index}
END
#### FALHAS
Exemplo 03: Teste lidando com Suite e Test Teardowns
Esse keyword vai passar sozinha!
Essa keyword fará o teste falhar, não executando as keywords abaixo!
Esse keyword vai passar sozinha!
Esse keyword vai falhar sozinha!
Esse aqui também vai passar com uma condição e vai parar de executar as keywords abaixo!
${STATUS} Run Keyword And Return Status Should Be True "May" == "May"
Log ${STATUS}
Pass Execution If ${STATUS} message=May é igual a May, então passou!!
Essa keyword vai falhar, mas é uma falha que deve acontecer para meu teste ser considerado OK!
Run Keyword And Expect Error '"May" == "João"' should be true. Should Be True "May" == "João"
Essa keyword vai falhar, não vou ignorar (a suíte irá falhar), mas vou continuar a execução!
Run Keyword And Continue On Failure Should Be True "May" == "João"
Log Continuo a execução 1!!
Log Continuo a execução 2!!
Log Continuo a execução 3!!
Library OperatingSystem
Library String
Library Process
Library DatabaseLibrary
Menções Honrosas
Libraries Customizadas
Estrutura dos diretórios
GeradorHash.py
import hashlib
def gerar_hash(conteudo):
hash_conteudo = hashlib.sha256(str.encode(conteudo)).hexdigest()
print("Conteúdo: {}".format(conteudo))
print("Hash gerado: {}".format(hash_conteudo))
return hash_conteudo
def gerar_hash_arquivo(filename):
print("Arquivo: {}".format(filename))
h = hashlib.sha256()
return h.hexdigest()
myLibrary.robot
*** Settings ***
Library ./Libraries/HashLibrary/geradorHash.py