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

Run tests from the tests directory:

rapidtest run

Scan a FastAPI/Starlette app to generate ASGI tests:

rapidtest scan module:app
  • 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

Run tests from the tests directory:

rapidtest run

Scan a FastAPI/Starlette app to generate ASGI tests:

rapidtest scan module:app

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.10
  • 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.9.0.tar.gz (22.3 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.9.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rapidtest-0.9.0.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rapidtest-0.9.0.tar.gz
Algorithm Hash digest
SHA256 8f9f144b12121e1d9df8cb396cd961c8b82aed7ac0fd115e331d9ba3fe9319dc
MD5 55478dbae83c89b1ea2fe2725d5a21c1
BLAKE2b-256 ce30ed5365afd26515c79f5e20fd5fd01329ff8bf612d5b69c58bb9e292c5bec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapidtest-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rapidtest-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8fa9f337badfe11ee8bf1fa6f62fba48b2a48f0fb75362303342f544cecc22a9
MD5 e85761331e00641948e349a0a7a6ec07
BLAKE2b-256 9c3394bfa5791493a264dd9ee379024a38bf39c45efb376ad8d299155315aed0

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