Agent skill
robotframework-requests-skill
Guide AI agents in creating REST API tests using RequestsLibrary. Use when building HTTP client tests, JSON/XML API testing, session management, authentication, file uploads, and response validation.
Stars
163
Forks
31
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/robotframework-requests-skill
SKILL.md
Requests Library Skill
Quick Reference
RequestsLibrary provides HTTP client keywords for REST API testing, wrapping Python's requests library. It supports JSON, XML, form data, file uploads, and all authentication methods.
Installation
bash
pip install robotframework-requests
Library Import
robotframework
*** Settings ***
Library RequestsLibrary
Library Collections # Often needed for dict/list operations
Two Usage Styles
Style 1: Sessionless (Simple, Recommended for Most Cases)
Direct HTTP calls without session management:
robotframework
${response}= GET https://api.example.com/users
${response}= POST https://api.example.com/users json=${data}
${response}= PUT https://api.example.com/users/1 json=${data}
${response}= DELETE https://api.example.com/users/1
Style 2: With Session (For Multiple Calls to Same API)
Create a session once, reuse for multiple requests:
robotframework
Create Session api https://api.example.com verify=${True}
${response}= GET On Session api /users
${response}= POST On Session api /users json=${data}
${response}= DELETE On Session api /users/1
Core Keywords Quick Reference
HTTP Methods
| Keyword | Usage | Description |
|---|---|---|
GET |
GET ${URL} |
Retrieve resource |
POST |
POST ${URL} json=${data} |
Create resource |
PUT |
PUT ${URL} json=${data} |
Replace resource |
PATCH |
PATCH ${URL} json=${data} |
Partial update |
DELETE |
DELETE ${URL} |
Remove resource |
HEAD |
HEAD ${URL} |
Get headers only |
OPTIONS |
OPTIONS ${URL} |
Get allowed methods |
Request Options
| Option | Example | Description |
|---|---|---|
json |
json=${dict} |
Send JSON body |
data |
data=${form} |
Send form data |
params |
params=${query} |
URL query parameters |
headers |
headers=${headers} |
Custom headers |
expected_status |
expected_status=201 |
Verify status code |
timeout |
timeout=30 |
Request timeout (seconds) |
verify |
verify=${False} |
SSL verification |
Working with JSON
Send JSON Data
robotframework
&{user}= Create Dictionary name=John email=john@example.com
${response}= POST ${API_URL}/users json=${user}
Parse JSON Response
robotframework
${response}= GET ${API_URL}/users/1
${json}= Set Variable ${response.json()}
${name}= Set Variable ${json}[name]
${email}= Set Variable ${json}[email]
Access Nested JSON
robotframework
# Response: {"user": {"profile": {"name": "John"}}}
${name}= Set Variable ${response.json()}[user][profile][name]
Response Validation
Status Code Verification
robotframework
# In request (recommended)
${response}= GET ${URL} expected_status=200
${response}= POST ${URL} json=${data} expected_status=201
${response}= DELETE ${URL} expected_status=204
# Post-request
Status Should Be 200 ${response}
Should Be Equal As Integers ${response.status_code} 200
# Accept any status (for error testing)
${response}= GET ${URL}/notfound expected_status=anything
Response Content Validation
robotframework
Should Be Equal ${response.json()}[status] success
Should Contain ${response.text} success
Dictionary Should Contain Key ${response.json()} id
Should Not Be Empty ${response.json()}[name]
Headers
Set Request Headers
robotframework
&{headers}= Create Dictionary
... Authorization=Bearer ${TOKEN}
... Content-Type=application/json
... Accept=application/json
${response}= GET ${URL} headers=${headers}
Check Response Headers
robotframework
${content_type}= Set Variable ${response.headers}[Content-Type]
Should Contain ${content_type} application/json
Common Patterns
CRUD Operations
robotframework
*** Test Cases ***
CRUD User Lifecycle
# Create
&{user}= Create Dictionary name=John email=john@test.com
${response}= POST ${API}/users json=${user} expected_status=201
${user_id}= Set Variable ${response.json()}[id]
# Read
${response}= GET ${API}/users/${user_id} expected_status=200
Should Be Equal ${response.json()}[name] John
# Update
&{updates}= Create Dictionary name=John Updated
${response}= PUT ${API}/users/${user_id} json=${updates} expected_status=200
Should Be Equal ${response.json()}[name] John Updated
# Delete
${response}= DELETE ${API}/users/${user_id} expected_status=204
Authentication Patterns
robotframework
# Bearer Token
&{headers}= Create Dictionary Authorization=Bearer ${TOKEN}
${response}= GET ${URL} headers=${headers}
# Basic Auth (using auth parameter)
${auth}= Create List ${USERNAME} ${PASSWORD}
${response}= GET ${URL} auth=${auth}
Query Parameters
robotframework
&{params}= Create Dictionary page=1 limit=10 sort=name
${response}= GET ${API}/users params=${params}
# Results in: GET /users?page=1&limit=10&sort=name
Response Object Properties
| Property | Description | Example |
|---|---|---|
status_code |
HTTP status code | ${response.status_code} |
text |
Response body as text | ${response.text} |
json() |
Parse JSON response | ${response.json()} |
headers |
Response headers dict | ${response.headers}[Content-Type] |
content |
Response body as bytes | ${response.content} |
cookies |
Response cookies | ${response.cookies} |
elapsed |
Request duration | ${response.elapsed.total_seconds()} |
When to Load Additional References
Load these reference files for specific use cases:
- Session management with cookies/state ->
references/sessions.md - All HTTP methods and options ->
references/request-methods.md - Complex JSON payloads/parsing ->
references/json-handling.md - XML/SOAP APIs ->
references/xml-text-handling.md - Response assertions ->
references/response-validation.md - OAuth, JWT, API keys ->
references/authentication.md - File upload/download ->
references/files-upload-download.md - SSL certificates, mTLS ->
references/ssl-certificates.md - Error debugging ->
references/troubleshooting.md
Didn't find tool you were looking for?