首先客套的来介绍一些Locust是啥:
Locust是一个容易使用、分布式的压力测试工具。它是用于网站压力测试(或其它系统)并找出多少用户一个系统可以承载。
在测试过程中,策略就是一个Locust的蠕虫将会攻击你的网站。每一个locust的行为(或你使用的测试用户)是你自己定义的,并且蠕虫进程从一个网页视图中被实时监测。这样会帮助你来实现测试,在真实用户使用前定义系统的瓶颈。
Locust是完全基于事件的,因此可以在单台机器中支持数以千计的用户在线。和其它基于事件的程序相比较,它是不需要使用回调的。相反,它通过gevent使用轻量级的进程。每一个locust测试你的网站时,实际上是真实的在内部运行它自己的进程(或greenlet,准确的说)。这样就允许你不使用复杂的回调方法,而是使用Python编写复杂的场景。
关于Locust:
1、locust作为一款性能测试工具,没有单独的ui界面,可以说是python下的一些库的集成
locust完全基于python作为编程语言,采用pure python描述测试脚本,其中的http请求也是完全基于Requests库,除了HTTP/HTTPS协议,locust也可以测其他协议的系统,只需要采用python调用对应的库进行请求描述即可,可以说python对应的库还是非常齐全的。
2、与jmeter相比较而言,locust更加的轻量化,采用的是不同于jmeter中进程和线程的处理机制(协程【微线程】),有效避免了系统的资源调度,由此可以大幅度的提高单击系统的并发能力
3、Github地址:
https://github.com/locustio/locust
注:如果想查看python下依赖了哪些库的话,可以进入github,点击setup.py进入查看
上述标红的地方就是依赖的第三方库及支持版本(详细的介绍见下方),安装这些库的时候也应遵循其显示的版本号,如果与当前支持的版本号不一致或者小于当前版本号的时候就会安装失败。
4、locust组成模块(所依赖的库)【gevent】是python下实现协程的一个第三方库,能够使系统获取极高的并发性能(locust基础模块)
简而言之,它的特点就是协程,web管理工具,超级好用。
第一步,安装
依然是老伙伴pip工具(完美安装依赖)
pip install Locust
Locust有六个依赖的python模块
1.gevent:在Python中实现协程的第三方库。协程又叫微线程Corouine。使用gevent可以获取极高的并发能力;
2.flask:Python的一个web开发框架,和django相当;
3.requests:支持http/https访问的库;
4.msgpack-python:一种快速、紧凑的二进制序列化格式,使用与类似json的数据;
5.six:提供了一些简单的工具封装Python2和Python3 之间的差异;
6.pyzmq:安装这个第三方库,可以把Locust运行在多个进程或多个机器(分布式)
安装结束了之后我们就开启Locust之旅了。
第二步,使用
如何快速的创建一个Locust Demo。
import time
from locust import HttpUser, task, between, events
import urllib3
from locust.contrib.fasthttp import FastHttpLocust
urllib3.disable_warnings()
@events.test_start.add_listener
def on_test_start(**kwargs):
print('===测试最开始提示===')
@events.test_stop.add_listener
def on_test_stop(**kwargs):
print('===测试结束了提示===')
class TestTask(HttpUser):
wait_time = between(1, 5)
# host = 'https://www.baidu.com'
def on_start(self):
print('这是SETUP,每次实例化User前都会执行!')
@task(1)
def getBaidu(self):
self.client.get(url="/", verify=False)
def on_stop(self):
print('这是TEARDOWN,每次销毁User实例时都会执行!')
# class MyLocust(FastHttpLocust):
# task_set = TestTask
# min_wait = 1000
# max_wait = 60000
if __name__ == "__main__":
import os
os.system("locust -f locust1.py --host=https://www.baidu.com")
之后就可以打开locust了
在浏览器中输入地址:
http://localhost:8089/
你会看到这样的页面
我们看图介绍一下数据:
Type 访问类型
Name 任务名(python中定义的方法名)
Requests 请求的总次数
Fails 失败的次数
Median (ms) 中间数耗时
Average (ms) 平均耗时
Min (ms) 最低耗时
Max (ms) 最大耗时
Average size (bytes) 平均耗时
Current RPS 每秒钟处理的访问的次数
这就是locust最基本的使用方法和用途了!