locust 阶梯压测接口案例
时间: 2023-10-31 08:06:33 浏览: 142
下面是一个使用 locust 进行阶梯压测的接口案例:
```python
from locust import HttpUser, between, task, constant_pacing
class MyUser(HttpUser):
wait_time = constant_pacing(1)
@task(1)
def index(self):
self.client.get("/")
@task(2)
def about(self):
self.client.get("/about")
@task(3)
def contact(self):
self.client.get("/contact")
@task(4)
def services(self):
self.client.get("/services")
def on_start(self):
self.client.post("/login", json={"username":"testuser", "password":"testpass"})
def on_stop(self):
self.client.post("/logout")
def setup(self):
print("Test setup")
def teardown(self):
print("Test teardown")
```
在上面的例子中,我们定义了一个名为 `MyUser` 的 locust 用户,并设置了每秒发送一个请求的速率。在用户行为中,我们定义了四个任务:`index`、`about`、`contact` 和 `services`,分别对应不同的接口。在 `on_start` 方法中,我们定义了登录操作,而在 `on_stop` 方法中,我们定义了退出操作。在 `setup` 和 `teardown` 方法中,我们可以进行测试前的准备和测试后的清理工作。
为了进行阶梯压测,我们可以在 locust 命令中指定 `--step-load` 参数,并设置每个阶段的用户数和持续时间,例如:
```
locust -f example.py --step-load --step-clients 10 20 30 --step-time 30s --host https://example.com
```
上面的命令将会进行三个阶段的压测,分别为 10、20 和 30 个用户,每个阶段持续 30 秒。在测试过程中,locust 会自动逐步增加用户数,直到达到预设的最大用户数。
阅读全文