RobotFramework-HttpCtrl is a library for Robot Framework that provides HTTP/HTTPS client and HTTP server (IPv4 and IPv6) services to make REST API testing easy.
Author: Andrei Novikov
License: The 3-Clause BSD License
Documentation: https://annoviko.github.io/robotframework-httpctrl/
New features are implemented by request that can be created here using issues [Press Me to Create a Feature Request]. Please, do not hesitate to create feature requests.
Please, do not hesitate to report about bugs using issues here [Press Me to Report a Bug].
Python version: >=3.8
Installation using pip3 tool:
$ pip3 install robotframework-httpctrl
HttpCtrl contains following general libraries:
- HttpCtrl.Client - provides API to work with HTTP/HTTPS client [link client documentation].
- HttpCtrl.Server - provides API to work with HTTP server [link server documentation].
- HttpCtrl.Json - provides API to work Json messages [link json documentation].
- HttpCtrl.Logging - provides API to configure the logging system that is used by HttpCtrl library [link logging documentation].
Send GET request to obtain origin IP address and check that is not empty:
*** Settings ***
Library String
Library HttpCtrl.Client
Library HttpCtrl.Json
*** Test Cases ***
Get Origin Address
Initialize Client www.httpbin.org
Send HTTP Request GET /ip
${response status}= Get Response Status
${response body}= Get Response Body
${response body}= Decode Bytes To String ${response body} UTF-8
${expected status}= Convert To Integer 200
Should Be Equal ${response status} ${expected status}
${origin}= Get Json Value From String ${response body} origin
Should Not Be Empty ${origin}
Send POST request and extract required information from response:
*** Settings ***
Library String
Library HttpCtrl.Client
Library HttpCtrl.Json
*** Test Cases ***
Send POST Request
Initialize Client www.httpbin.org
${body}= Set Variable { "message": "Hello World!" }
Send HTTP Request POST /post ${body}
${response status}= Get Response Status
${response body}= Get Response Body
${response body}= Decode Bytes To String ${response body} UTF-8
${expected status}= Convert To Integer 200
Should Be Equal ${response status} ${expected status}
${message}= Get Json Value From String ${response body} data
Should Be Equal ${message} ${body}
Send PATCH request using HTTPS protocol:
*** Settings ***
Library String
Library HttpCtrl.Client
Library HttpCtrl.Json
*** Test Cases ***
Send HTTPS PATCH Request
Initialize Client www.httpbin.org
${body}= Set Variable { "volume": 77, "mute": false }
Send HTTPS Request PATCH /patch ${body}
${response status}= Get Response Status
${response body}= Get Response Body
${response body}= Decode Bytes To String ${response body} UTF-8
${expected status}= Convert To Integer 200
Should Be Equal ${response status} ${expected status}
${volume}= Get Json Value From String ${response body} json/volume
Should Be Equal ${volume} ${77}
${mute}= Get Json Value From String ${response body} json/mute
Should Be Equal ${mute} ${False}
In this example HTTP client sends POST request to HTTP server. HTTP server receives it and checks incoming request for correctness.
*** Settings ***
Library String
Library HttpCtrl.Client
Library HttpCtrl.Server
Test Setup Initialize HTTP Client And Server
Test Teardown Terminate HTTP Server
*** Test Cases ***
Receive And Reply To POST
${request body}= Set Variable { "message": "Hello!" }
Send HTTP Request Async POST /post ${request body}
Wait For Request
Reply By 200
${method}= Get Request Method
${url}= Get Request Url
${body}= Get Request Body
${body}= Decode Bytes To String ${body} UTF-8
Should Be Equal ${method} POST
Should Be Equal ${url} /post
Should Be Equal ${body} ${request body}
*** Keywords ***
Initialize HTTP Client And Server
Initialize Client 127.0.0.1 8000
Start Server 127.0.0.1 8000
Terminate HTTP Server
Stop Server