locust

Locust load testing in Python. Use for load testing.

7 stars

Best use case

locust is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Locust load testing in Python. Use for load testing.

Teams using locust should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/locust/SKILL.md --create-dirs "https://raw.githubusercontent.com/G1Joshi/Agent-Skills/main/skills/testing/locust/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/locust/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How locust Compares

Feature / AgentlocustStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Locust load testing in Python. Use for load testing.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Locust

Locust is an easy-to-use, scriptable, and scalable performance testing tool. You define the behavior of your users in regular Python code.

## When to Use

- **Python Teams**: Scripting complexity is zero if you know Python.
- **Distributed Testing**: Easy to scale out using a Master/Worker architecture to simulate millions of users.
- **Web UI**: Comes with a nice web interface to start tests and view graphs in real-time.

## Quick Start

```python
from locust import HttpUser, task, between

class WebsiteUser(HttpUser):
    wait_time = between(1, 5)

    @task
    def index(self):
        self.client.get("/")

    @task(3)
    def view_item(self):
        item_id = randint(1, 10000)
        self.client.get(f"/item?id={item_id}", name="/item")
```

Run `locust -f locustfile.py`.

## Core Concepts

### User Class

Represents a user. Attributes like `wait_time` simulate "think time" between actions.

### Tasks

Decorator `@task` marks methods as user actions. You can weight them (`@task(3)` runs 3x more often than `@task(1)`).

### Web UI

Accessible at `http://localhost:8089`. Allows you to set the user count and spawn rate dynamically.

## Best Practices (2025)

**Do**:

- **Use `FastHttpUser`**: Locust's standard `HttpUser` uses `requests` (slow). `FastHttpUser` uses `geventhttpclient` which is much faster for load generation.
- **Group Requests**: Use the `name` argument in `client.get(url, name="my-endpoint")`. Otherwise, every unique URL (with differing IDs) shows as a separate entry in reports.

**Don't**:

- **Don't block the Greenlet**: Locust uses Gevent. Do not perform CPU-intensive work or blocking IO (standard `time.sleep`) in your tasks, or you pause the whole user runner.

## References

- [Locust Documentation](https://locust.io/)