Skip to main content

A lightweight library for REST API testing with HTTP, ASGI, and performance testing

Project description

RapidTest Logo

RapidTest

A lightweight library for REST API testing with ASGI/HTTP mode, fake data generation, and performance testing.

Python Version License PyPI Version Downloads

Features

  • ASGI Testing - Test FastAPI/Starlette apps directly without HTTP server
  • HTTP Testing - Test external APIs with GET, POST, PUT, PATCH, DELETE
  • Built-in response validation (status, JSON body, required keys)
  • Fake data generation with Faker
  • Performance testing with concurrent users (threading + requests)
  • Test any endpoint with just one line of code

Installation

pip install rapidtest

CLI

Generate a test skeleton file:

rapidtest init
  • ASGI Testing - Test FastAPI/Starlette apps directly without HTTP server
  • HTTP Testing - Test external APIs with GET, POST, PUT, PATCH, DELETE
  • Built-in response validation (status, JSON body, required keys)
  • Fake data generation with Faker
  • Performance testing with concurrent users (threading + requests)
  • Test any endpoint with just one line of code

Installation

pip install rapidtest

CLI

Generate a test skeleton file:

rapidtest init

Quick Start (ASGI mode)

Use this when you want to test your ASGI app directly (for example FastAPI) without network overhead.

from backend.main import app
from rapidtest import ASGITest, StatusCode


tester = ASGITest(app=app)

tester.get(
    path="/ping",
    status=StatusCode.OK_200,
    json={"ok": True}
)

Output:

✅ 1. PASSED
time: 0.01 s

Quick Start (HTTP mode)

from rapidtest import HTTPTest, StatusCode

api = HTTPTest(url="http://localhost:8000")

api.get(
    path="/health",
    status=StatusCode.OK_200,
    keys=["message"]
)

payload = {"username": "hector", "password": "secret"}
api.post(
    path="/login",
    json=payload,
    status=StatusCode.OK_200,
    keys=["token"]
)

Output:

✅ 1. PASSED
✅ 2. PASSED
time: 0.05 s

Data Generation

from rapidtest import Data

auth = Data.generate_auth_user()

print(auth)  # {"username": "...", "password": "..."}

Useful helpers include:

  • generate_name()
  • generate_email()
  • And more...

Performance Testing

from rapidtest import Performance

perf = Performance(
    base_url="http://localhost:8000",
    users=20,
    duration=15,
    timeout=10
)

# Add multiple endpoints with different methods
perf.add_task(endpoint="/health", method="GET")
perf.add_task(endpoint="/login", method="POST", json={"user": "test"})

results = perf.run()

Returned metrics:

  • total_requests
  • successful_requests
  • failed_requests
  • success_rate
  • avg_response_time
  • min_response_time
  • max_response_time
  • requests_per_second
  • duration
  • users

Requirements

  • Python >=3.7
  • requests>=2.25.1
  • faker>=13.0.0

Project Info

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rapidtest-0.7.0.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rapidtest-0.7.0-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

Details for the file rapidtest-0.7.0.tar.gz.

File metadata

  • Download URL: rapidtest-0.7.0.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapidtest-0.7.0.tar.gz
Algorithm Hash digest
SHA256 461fb0c93cb4db50a64cb09622f3e4605d040ad6820977e3b0a32b90d49ae543
MD5 9d5e842cbdf486206045828c0895e11f
BLAKE2b-256 ad1ab3413c6f920af778a799c0f4c0a39848278c83e7c7dbe8df03637799d8c1

See more details on using hashes here.

File details

Details for the file rapidtest-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: rapidtest-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 15.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapidtest-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b784c83f0c1848a73d71033ea81522545e3c97b224a892eaa65d7a25a63b6b6e
MD5 eb09452e70c657fc9da1a6ffccf2f3a9
BLAKE2b-256 52f6a48a6e5c99255cb9ecd9897d251e1b1b1c25874bc9845ab378f00813c14c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page