API Testing with Python Requests

Complete Guide from Basics → Advanced | Real-Time Examples | Industry Standard

← Back to Training

📌 Introduction to API Testing

📌 Installing & Importing Requests

pip install requests
import requests
  

🔹 Module 1: GET Request

GET is used to retrieve data from an API.

import requests

url = "https://reqres.in/api/users?page=2"
response = requests.get(url)

print(response.status_code)
print(response.json())
  

Validation:

assert response.status_code == 200
assert response.json()["page"] == 2
  

🔹 Module 2: POST Request

POST is used to create a new resource on the server.

import requests

url = "https://reqres.in/api/users"
payload = {
    "name": "Ramesh",
    "job": "Founder - Prakura IT Solutions"
}

response = requests.post(url, json=payload)

print(response.json())
  

Validation:

assert response.status_code == 201
assert response.json()["name"] == "Ramesh"
  

🔹 Module 3: PUT Request

PUT updates the entire object.

url = "https://reqres.in/api/users/2"
payload = {
    "name": "Ramesh Kudikala",
    "job": "CEO"
}

response = requests.put(url, json=payload)
print(response.json())
  

🔹 Module 4: DELETE Request

url = "https://reqres.in/api/users/2"
response = requests.delete(url)

print(response.status_code)  # 204 expected
  

🔹 Module 5: Headers, Cookies & Query Params

Headers:

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer 12345"
}
  

Query Params:

params = {"page": 2}
requests.get(url, params=params)
  

Cookies:

cookies = {"session_id": "abc123"}
requests.get(url, cookies=cookies)
  

🔹 Module 6: Authentication

Basic Auth:

from requests.auth import HTTPBasicAuth
requests.get(url, auth=HTTPBasicAuth("user", "pass"))
  

Bearer Token:

headers = {"Authorization": "Bearer YOURTOKEN"}
requests.get(url, headers=headers)
  

JWT:

headers = {"Authorization": "JWT TOKEN"}
requests.get(url, headers=headers)
  

🔹 Module 7: File Upload

files = {
    "file": open("resume.pdf", "rb")
}

response = requests.post(upload_url, files=files)
  

🔹 Module 8: Response Validation

assert response.status_code == 200
assert response.elapsed.total_seconds() < 2
assert response.headers["Content-Type"] == "application/json; charset=utf-8"
assert "data" in response.json()
  

🚀 Mini API Automation Project (GET + POST + PUT + DELETE)

GET Users:

def test_get_users():
    res = requests.get("https://reqres.in/api/users?page=2")
    assert res.status_code == 200
  

Create User:

def test_create_user():
    payload = {"name": "Ramesh", "job": "QA Lead"}
    res = requests.post("https://reqres.in/api/users", json=payload)
    assert res.status_code == 201
  

Update User:

def test_update_user():
    payload = {"name": "Ramesh", "job": "CEO"}
    res = requests.put("https://reqres.in/api/users/2", json=payload)
    assert res.status_code == 200
  

Delete User:

def test_delete_user():
    res = requests.delete("https://reqres.in/api/users/2")
    assert res.status_code == 204