由于jmeter压测会有各种各样的bug,特此来用一下python的locust
1.安装locust
pip install locust
2.新建locustfile.py文件
# coding=utf-8
from locust import TaskSet, HttpUser, task, between
#2.定义任务集(用户行为):相当于Jmeter中定义一个事务,事务中包含多个接口请求
class UserBehavior(TaskSet):
def on_start(self):
print("开始的时候执行")
def on_stop(self):
print("结束的时候执行")
#1.定义任务(接口请求):相当于Jmeter中的HTTP请求取样器
@task()
def baidu(self):
data = {
"params": '{"paperSubjectIds": [], "questionIds": [] }',
"TOKEN": "123456789",
}
response = self.client.post('/list', data=data) //进行post请求
print("Response json:", response.json())
response = self.client.get('/list', params=data) //进行get请求
print("Response json:", response.json())
#3.定义Locust类(用户):相当于Jmeter中的线程组(用户),控制事务执行
class WebsiteUser(HttpUser):
tasks = [UserBehavior]
wait_time = between(1, 2)
host = "http://www.baidu.com"
3.启动locust,有三种方式
- 直接命令行执行locust
- locust -f locustfile.py
- locust --headless --users 10 --spawn-rate 1 -H http://your-server.com
4.在浏览器以UI模式打开报告:当用前两种方式运行时 - 首先改一下源码:找到你的python安装目录下的 \Lib\site-packages\locust\argument_parser.py
- 然后搜索bind,找到如下default,改成127.0.0.1
- 打开浏览器,进入http://127.0.0.1:8089/