Validação das requisições no Robot Framework

Reinaldo Mateus Rossetti Junior
3 min readSep 13, 2022

RequestsLibrary é uma biblioteca Robot Framework destinada a fornecer funcionalidades de teste de API HTTP, envolvendo a conhecida Biblioteca de Requests Python . Requests permite enviar solicitações HTTP/1.1 com extrema facilidade para Rest API. A RequestsLibrary do Robot usa a biblioteca Requests do Python, a mesma padroniza os nomes da funcionalidades e deixa mais fácil para o QA.

Esse breve introdução foi para mostrar a imagem abaixo, os nossas validações ou assertivas são em cima do Response, ou seja em cima da resposta da API\End point.

Para validar o Status Code podemos usar as funções abaixo:

As duas primeiras validações fazem parte da robotframework-requests, as restantes são do BuildIn.

A diferença entre Status Should Be e Request Should Be Successfull que a primeira você precisa passar o ${RESPONSE.ok} ou ${RESPONSE.status_code}, e a segunda não, não é preciso passar Parâmetro para o Request Should Be Successfull, ele assume que o valor padrão é 200 ou 201.

Status Should Be 201 ${RESPONSE.status_code}
Request Should Be Successful
Should Be Equal As Strings ${RESPONSE.status_code} 200
Should Be Equal As Integers ${RESPONSE.status_code} 404
Should Be Equal ${RESPONSE.status_code} ${201}
Should Be Equal As Strings ${RESPONSE.ok} True
Should Be Equal As Strings ${RESPONSE.reason} Created
Should Be Equal As Strings ${RESPONSE.reason} OK

https://marketsquare.github.io/robotframework-requests/doc/RequestsLibrary.html

Para imprimir o retorno da Request, precisamos adicionar a mesma nos logs, usamos a função text.

Log               Resposta da API: ${RESPONSE.text}
Log To Console Resposta da API: ${RESPONSE.text}

A função json() -> ${RESPONSE.json()}

Converte uma string para JSON object, no caso acima a string é a resposta da nossa requisição.

content String content to convert into JSON

pretty_print If defined, will output JSON is pretty print format

Para validar que o conteúdo do json não é vazio, usamos a função abaixo:

Should Not Be Empty    ${RESPONSE.json()}

Para validar dados do Header usamos a função headers[parâmetro que ira validar].

Should Be Equal As Strings   ${RESPONSE.headers["Content-Type"]}    application/json; charset=utf-8
Should Contain ${RESPONSE.headers["Content-Type"]} application/json

** Acima temos um exemplo exatamente igual ao conteúdo e outro que contém o valor no conteúdo.

Para validar o conteúdo texto sempre vamos trabalhar em cima da RESPONSE, ou seja em cima da resposta da nossa requisição:

Then validating the Response's success data
Dictionary Should Contain Item ${RESPONSE.json()["sys"]} country ${COUNTRY}
Dictionary Should Contain Item ${RESPONSE.json()} coord ${COORDINATES}
Dictionary Should Contain Item ${RESPONSE.json()} name ${CITY}
Should Be Equal As Strings ${RESPONSE.status_code} 200
Should Be Equal As Strings 1 ${RESPONSE.json()}[id]
Dictionary Should Contain Key ${RESPONSE.json()} id
Should Contain ${RESPONSE.json()["message"]} Cadastro realizado com sucesso
Dictionary Should Contain Item ${RESPONSE.json()} message Cadastro realizado com sucesso
Should Not Be Empty ${RESPONSE.json()["_id"]}
${count_id}= Get length ${RESPONSE.json()["_id"]}
should be equal as numbers ${count_id} 16
Length Should Be ${RESPONSE.json()["_id"]} 16
Should Be True ${count_id} > 10
Should Be True True
Should Not Be True False

Exemplos utilizando o Length:

https://github.com/robotframework/robotframework/blob/master/atest/testdata/standard_libraries/builtin/length.robot

Muitas das vezes precisamos passar um valor da Resposta da Requisição para outra KeyWord, nesse caso usamos a função Get From Dictionary:

${ID_PRODUTO_CADASTRADO}  Get From Dictionary    ${RESPONSE.json()}    _id
Set Suite Variable ${ID_PRODUTO_CADASTRADO}

Exemplo usando o dicionário acessado o array de produtos item 0 que é o primeiro produto da lista:

Listar o produto cadastrado
${HEADERS}= Create Dictionary Authorization=${TOKEN}
${PARAMS}= Create Dictionary _id=${ID_PRODUTO_CADASTRADO}
${RESPONSE}= GET On Session ${ALIAS} url=produtos headers=${HEADERS} params=${PARAMS}
Log Resposta : ${RESPONSE.json()}
Log To Console Resposta : ${RESPONSE.json()}
Request Should Be Successful
Dictionary Should Contain Item ${RESPONSE.json()["produtos"][0]} nome ${produto}
Dictionary Should Contain Item ${RESPONSE.json()["produtos"][0]} preco ${preco}
Dictionary Should Contain Item ${RESPONSE.json()["produtos"][0]} descricao ${descricao}
Dictionary Should Contain Item ${RESPONSE.json()["produtos"][0]} quantidade ${quantidade}
Dictionary Should Contain Item ${RESPONSE.json()["produtos"][0]} _id ${ID_PRODUTO_CADASTRADO}

Segue as validações que encontra no Buildin do Robot Framework:

Should Be Empty Should Be Equal Should Be Equal As Integers Should Be Equal As Numbers Should Be Equal As Strings Should Be True Should Contain Should Contain X Times Should End With Should Match Should Match Regexp Should Not Be Empty Should Not Be Equal Should Not Be Equal As Integers Should Not Be Equal As Numbers Should Not Be Equal As Strings Should Not Be True Should Not Contain Should Not End With Should Not Match Should Not Match Regexp Should Not Start With Should Start With Sleep Syslog Variable Should Exist Variable Should Not Exist Wait Until Keyword Succeeds

Referências:

https://github.com/MarketSquare/robotframework-requests

https://github.com/kennethreitz/requests

https://docs.python-requests.org/en/latest/

https://marketsquare.github.io/robotframework-requests/doc/RequestsLibrary.html

--

--