VenomQA - State-Based API Testing
Description: Test your entire app, not just endpoints. VenomQA explores all paths through your application and catches bugs that isolated tests miss.

# Test your entire app,
not just endpoints

VenomQA explores all paths through your application and catches the bugs that isolated endpoint tests miss.

View on GitHub Install Package
$ `pip install venomqa`

#### Empty

No data

create

#### Has Data

Items exist

update

#### Modified

Data changed

VenomQA models your app as a state graph and explores all possible paths

## The Problem with Traditional Testing

Every action in your app has cascading effects. Traditional tests miss them.

### ✓ Cross-Feature Consistency

When a user uploads a file, does the storage usage update? Does quota decrease? Can search find it? VenomQA checks everything.

### ✓ All Path Combinations

Users don't follow linear paths. They jump between features, abandon flows, come back later. VenomQA tests all combinations.

### ✓ Invariant Verification

Define rules that must always be true. VenomQA checks them after every action, catching bugs before users do.

### ✓ Automatic Context Flow

No more manually tracking IDs between requests. Context flows automatically between steps.

## How It Works

Three steps to test your entire application.

1

### Define Your States

Model your app as states (nodes) and actions (edges).

    from venomqa import StateGraph

    graph = StateGraph(name="my_app")

    # Define states
    graph.add_node("empty", initial=True)
    graph.add_node("has_data")
    graph.add_node("processing")

2

### Add Transitions & Invariants

Define how states connect and rules that must always hold.

    # Add transitions
    graph.add_edge("empty", "has_data", action=create_item)
    graph.add_edge("has_data", "empty", action=delete_item)

    # Add invariants (checked after EVERY action)
    graph.add_invariant(
        "count_matches",
        check=lambda c, db, ctx: api_count == db_count,
        description="API must match database"
    )

3

### Explore All Paths

VenomQA automatically traverses every path and reports issues.

    from venomqa import Client

    client = Client(base_url="http://localhost:8000")
    result = graph.explore(client)

    print(result.summary())
    # Paths explored: 18
    # Invariant violations: 0
    # ALL PATHS PASSED

## Features

Everything you need for comprehensive API testing.

### State Graph Testing

Model your app as nodes and edges. VenomQA explores all reachable paths automatically.

### Invariant Checking

Define rules that must hold after every action. Catch consistency bugs before production.

### Journey Testing

Chain steps together with automatic context flow. IDs pass between steps automatically.

### Database Checkpoints

Save and restore database state. Test multiple paths from the same starting point.

### Rich Reporting

HTML, JSON, JUnit XML reports. Slack and Discord notifications for CI/CD.

### PostgreSQL, MySQL, SQLite

Built-in support for major databases. State management that actually works.

## Ready to find the bugs you've been missing?

Start testing your entire app in minutes.

View on GitHub Read the Docs