以下是一个使用 Locust 进行接口性能测试的简单示例。在这个示例中,我们将模拟用户对一个 API 接口进行 POST 请求。
首先,确保你已经安装了 Locust:
```bash
pip install locust
```
然后,创建一个 Python 文件,例如 `my_locust_file.py`,并在其中编写以下代码:
```python
from locust import HttpUser, task, between
class WebsiteUser(HttpUser):
wait_time = between(5, 15) # 设置用户每次请求之间的等待时间(单位:秒)
@task
def load_test_api(self):
url ='/path/shellCompany'
headers = {"Content-Type":"application/json"}
params = {"credit":"1","data":"2"}
with self.client.post(url=url, json=params, headers=headers,verify=False,catch_response=True)as res:
if res.status_code ==200:
data = res.json()['credit']['header']['rspCode']
if data =='00000':
res.success()
else:
res.failure("Request failed with status code: %s" % data)
else:
res.failure("Request failed with status code: {}".format(res.status_code))
在上述代码中:
- 我们定义了一个名为 `WebsiteUser` 的类,继承自 `HttpUser`。
- wait_time = between(5, 15) 表示用户每次请求之间的等待时间会在 5 到 15 秒之间随机选择。
- @task 装饰器标记了一个用户行为任务,这里我们定义了一个名为 `load_test_api` 的任务,它会发送一个 GET 请求到 `/api/my_endpoint`。
- self.client.post() 是用于发送 HTTP 请求的方法,你可以替换为 `get()`, `put()`, `delete()` 等其他方法来模拟不同的 HTTP 请求类型。
我们使用 catch_response=True 参数来捕获 HTTP 响应。
在 with 语句的上下文中,我们可以访问到响应对象,并对其属性进行检查。
使用 response.status_code 检查 HTTP 状态码。
如果状态码为 200,我们解析响应内容(在这个例子中,我们假设它是一个 JSON 对象),然后添加断言来检查响应数据中的特定字段。
如果所有断言都通过,我们调用 response.success() 方法来标记请求为成功。
如果状态码不是 200,我们调用 response.failure() 方法,传入一个描述失败原因的消息,并标记请求为失败。
要运行 Locust,并针对这个示例进行性能测试,打开命令行,然后执行以下命令:
```bash
locust -f my_locust_file.py --host=http://your-api-url.com
```
在这里,将 `http://your-api-url.com` 替换为你要测试的实际 API URL。
这将会启动 Locust 服务,你可以在 Web 界面(默认地址 http://localhost:8089/)中配置并发用户数和吞吐量等参数,并开始执行性能测试。