locust性能测试:安装与使用(二)
2021-09-26 本文已影响0人
HC2
-
安装 locust
pip install locust
-
- 查看是否安装成功,查看版本号
安装成功会输出版本号
(pressure_env) lxdeMacBook-Pro-2:api_pressure lx$ locust -V
locust 2.2.1
-
3 更新最新版本号
pip install -U --pre locust
-
4 简单的接口压测例子:
from locust import HttpUser,TaskSet,between,task
import os
headers = {"Content-Type": "application/json", "app_id": "101"}
class UserBehavior(TaskSet):
@task
def test_baidu(self):
'''查询全部'''
url = '/widget?id=LocalNews&ajax=json&t=1632650885696'
param = {
"limit":8,
"offset":0,
}
with self.client.get(url,params=param,headers={},catch_response = True) as response:
print("=====", response.json())
class WebsiteUser(HttpUser):
host = 'http://news.baidu.com'
tasks = [UserBehavior]
wait_time = between(1, 2)
if __name__ == '__main__':
os.system("locust -f bb.py")
image.png
image.png
参数解析:
- Type:请求的类型,例如GET/POST。
- Name:请求名称
- requests:当前已完成的请求数量
- fails:当前失败的数量
- Median:响应时间的中间值,单位为毫秒
- 90%ile:根据正态分布,90%的响应时间在正态分布平均值下方
- Average:平均响应时间,单位为毫秒
- Min:最小响应时间,单位为毫秒
- Max:最大响应时间,单位为毫秒
- average Size:平均每个请求的数据量,单位为字节
- current RPS(requests per second):每秒钟处理请求的数量,即RPS
执行结果:
image.png脚本解析:
1、 @task装饰器装饰的函数表示是要被测试的一个任务
2、 wait_time = between(1, 3)
来模拟用户的真实操作,例如用户在实际操作中,从上一步到下一步的操作,中间可能存在思考时间 ,between(1, 3) 表示用户思考的时间,随机为1到3秒
host = 'http://news.baidu.com' 为要测试的域名
也可以写为:
class WebsiteUser(HttpUser):
# host = 'http://news.baidu.com'
tasks = [UserBehavior]
wait_time = between(1, 2)
if __name__ == '__main__':
os.system("locust -f bb.py --host=http://news.baidu.com")
当两处都写时,以#2为主
class WebsiteUser(HttpUser):
host = 'http://news.baidu.com222' #1
tasks = [UserBehavior]
wait_time = between(1, 2)
if __name__ == '__main__':
os.system("locust -f bb.py --host=http://news.baidu.com") #2
***旧版本写法有点不同:
from locust import HttpLocust, TaskSet, task,events
class UserBehavior(TaskSet):
@task
def test_baidu(self):
'''查询全部'''
url = '/widget?id=LocalNews&ajax=json&t=1632650885696'
param = {
"limit":8,
"offset":0,
}
with self.client.get(url,params=param,headers={},catch_response = True) as response:
print("=====", response.json())
class WebsiteUser(HttpLocust):
host = 'http://news.baidu.com/'
task_set = UserBehavior
min_wait = 1000
max_wait = 1000