一、安装Locustio模块
pip install locustio
安装好后,查看版本号
pip show locustio
二、开始测试
# 保存为locust01.py
# coding:utf-8
from locust import HttpLocust, TaskSet, task
# 建一个类BlogDemo(TaskSet),继承TaskSet,该类下面写一些准备请求的行为(访问的接口)
class BlogDemo(TaskSet):
# 用户行为:打开我的简书首页
# @task装饰该方法表示为用户行为。
# 括号里面参数表示该行为挑选执行的权重,数值越大,执行频率越高,不设置默认是1
@task(1)
def open_blog(self):
# 定义requests的请求头
header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36"}
# self.client调用get和post方法,跟requests是一样的
# requests.get 对应client.get
# requests.post 对应client.post
r = self.client.get("/u/125ddf84ee1d", headers=header, verify=False)
print(r.status_code)
assert r.status_code == 200
"""
WebsiteUser()类用于设置性能测试。
task_set :指向一个定义了的用户行为类。
min_wait :用户执行任务之间等待时间的下界,单位:毫秒。
max_wait :用户执行任务之间等待时间的上界,单位:毫秒。
"""
class websitUser(HttpLocust):
task_set = BlogDemo
min_wait = 3000 # 单位毫秒
max_wait = 6000 # 单位毫秒
if __name__ == "__main__":
import os
os.system("locust -f locust01.py --host=https://www.jianshu.com")
# -f 参数是指定运行的脚本
# --host是指定运行项目的host地址,
# 这里用的https://www.jianshu.com,
# 代码里面get访问的是"/u/125ddf84ee1d",拼接起来就是完整地址了
三、运行结果
[2019-07-23 09:37:29,214] DESKTOP-RV9FIIG/INFO/locust.main: Starting web monitor at *:8089
[2019-07-23 09:37:29,214] DESKTOP-RV9FIIG/INFO/locust.main: Starting Locust 0.11.0
8089是该服务启动的端口号。
由于是在本机上搭建的locust,所以可以直接在浏览器输入http://localhost:8089/打开,
如果是在其它机器上搭建的locust服务,那就通过http://其它机器IP:8089/打开
四、效果展示
Number of users to simulate 设置虚拟用户总数
Hatch rate (users spawned/second) 每秒启动虚拟用户数
点击Start swarming 开始运行性能测试
设置虚拟用户数20000,每秒启动2000个用户,点击Start swarming 开始运行
五、结果分析
Type:请求类型;
Name:请求路径;
requests:当前请求的数量;
fails:当前请求失败的数量;
Median:中间值,单位毫秒,一般服务器响应时间低于该值,而另一半高于该值;
Average:所有请求的平均响应时间,毫秒;
Min:请求的最小的服务器响应时间,毫秒;
Max:请求的最大服务器响应时间,毫秒;
Content Size:单个请求的大小,单位字节;
reqs/sec:每秒钟请求的个数。
Charts栏三个图标分别是:
吞吐量/每秒响应事务数(rps)实时统计
平均响应时间/平均事务数实时统计
虚拟用户数运行
下图可表明:当前系统每秒可以处理467.5个请求
响应时间
当前虚拟用户数为3417
点stop可以停止测试
点击new test可重新设置用户数