RequestsLibrary
is a Robot Framework test library that uses the Requests HTTP client.
Install robotframework-requests and it's dependencies via pip
pip install -U requests
pip install -U robotframework-requests
Here is a sample test case:
*** Settings *** | ||||
Library | Collections | |||
Library | RequestsLibrary | |||
*** Test Cases *** | ||||
Get Requests | ||||
Create Session | github | http://api.github.com | ||
Create Session | http://www.google.com | |||
${resp}= | Get Request | / | ||
Should Be Equal As Strings | ${resp.status_code} | 200 | ||
${resp}= | Get Request | github | /users/bulkan | |
Should Be Equal As Strings | ${resp.status_code} | 200 | ||
Dictionary Should Contain Value | ${resp.json()} | Bulkan Savun Evcimen |
RequestsLibrary tries to follow the same API as requests. In the above example, we load in the RequestsLibrary
using the Library
keyword. To be able to distinguish HTTP requests to different hosts and for ease of creation of test cases, you need to create a Session
. Internally this will create a request.Session
object. The Create Session
keyword accepts two arguments:
- alias to identify the session later
- root url to the server
HTTP verbs are mapped keywords which accept two arguments:
- alias identifying the Session we created earlier.
- URI to send the request to.
Above we create two Sessions - one to the github api, and the other to google. Creating sessions doesn't send any requests.
After we create a Session we can send any of the following Get, Post, Put, Patch, Options, Delete, and Head
requests. In the above example we send a GET request to the session with the alias google and check the HTTP response code. Then send a another GET request but this time to the session with the alias github and pass in a uri
. In this case it is /users/bulkan
which will return a JSON string. RequestsLibrary
returned object provides a method to get the content as a JSON object format called json().
Here is another test case where an outbound http proxy is used.
*** Settings *** | ||||
Library | RequestsLibrary | |||
*** Test Cases *** | ||||
Proxy Requests | ||||
${proxies}= | Create Dictionary | http=http://acme.com:912 | https=http://acme.com:913 | |
Create Session | github | http://api.github.com | proxies=${proxies} | |
${resp}= | Get Request | github | / | |
Should Be Equal As Strings | ${resp.status_code} | 200 |
Another test case where cookies are sent in the request headers:
*** Settings *** | ||||
Library | RequestsLibrary | |||
*** Test Cases *** | ||||
Cookies in request | ||||
${cookies}= | Create Dictionary | userid=1234567 | last_visit=2017-12-22 | |
Create Session | github | http://api.github.com | cookies=${cookies} | |
${resp}= | Get Request | github | / | |
Should Be Equal As Strings | ${resp.status_code} | 200 |
This repository also contains a library which can be used to send ssl requests. Below is an example of a test case where certificates are sent with the request:
*** Settings *** | ||||
Library | RequestsLibrary | |||
Library | RequestsKeywords.py | |||
*** Test Cases *** | ||||
Create SSL Session | ||||
[Tags] get get-cert | ||||
@{client_certs}= | Create List | ${CURDIR}${/}clientcert.pem | ${CURDIR}${/}clientkey.pem | |
Create Client Cert Session | crtsession | https://server.cryptomix.com/secure | client_certs=@{client_certs} | |
${resp}= | Get Request | crtsession | / | |
Should Be Equal As Strings | ${resp.status_code} | 200 |
For more examples see the tests
folder which contains testcase files that is used to test the keywords in this library against httpbin.org.
For individual keyword documentation see the following:
http://bulkan.github.io/robotframework-requests/
You can update the documentation once checked out by going to the top directory of this repo and issuing the following command:
bash python -m robot.libdoc src/RequestsLibrary/RequestsKeywords.py doc/RequestsLibrary.html
Send your questions to the Robot Framework Users Group