今年负责部门的人员培养工作,最近在部门内部分享和讲解了locust这个工具,今天再博客园记录下培训细节。相信你看完博客,一定可以上手locust这个性能测试框架了。
一、简介
1、优势
locust是python语言开发的一款的开源的的性能测试框架,他比jmeter更加的轻量级,主要是通过协程(gevent)的方式去实现并发,通过协程的方式可以大幅提高单机的并发能力,同时避免系统级的资源调度。locust具有开源性、分布式、支持高并发,支持webUI的操作方式。
2、劣势
locust的图表功能较弱,只展示了很少的数据
locust不支持监控服务端的状态,需要借助第三方工具,或者自己写代码去实现
二、安装
locust的安装非常简单,直接通过pip的方式就可以安装
pip install locust
三、locust的库和方法介绍
1、from locust import task
通过task可以把某个函数指定为任务,直接@task装饰对应的函数即可,在@tast(n)中可以有一个参数n,意思是这个任务的占比是多少
2、from locust import TaskSet
需要定义本文来源gaodai#ma#com搞@代~码^网+一个类,继承TaskSet这个类,这个是是一个任务集的概念,这个类中可以包括多个task
3、from locust import HttpUser
需要定义一个类,这个类要继承HttpUser,通过这个定义的类我们可以执行具体的任务集
看了上面的介绍,可能大家有点云里雾里的,下面我们由浅入深看代码
四、实战代码V1.0(入门代码)
1、代码如下
from locust import HttpLocust from locust import HttpUser from locust import task from locust import TaskSet #指定一个任务集 class My_task_set(TaskSet): #这是某个任务,30是比例,比如这里是30/50 @task(30) def getindex1(self): # client就是个requests对象 # catch_response,告诉locust如何判断请求失败还是成功 res = self.client.get("/bainianminguo/p/10952586.html") @task(20) def getindex2(self): # client就是个requests对象 res = self.client.get("/bainianminguo/p/7253930.html") class WebSite(HttpUser): # 指定要执行哪个任务集 tasks = [My_task_set,] # 请求和请求之间最小的间隔时间 min_wait = 1000 # 请求和请求之间最大的间隔时间 max_waif = 2000
2、进入代码的目录,执行如下命令
3、打开浏览器,输入http://localhost:8089/
4、参数讲解
Number of total users to simulate 模拟的总的用户数
Spawn rate 每秒钟新增的用户数
五、实战代码V1.1(入门代码)
1、任务集类中的on_start方法
class My_task_set(TaskSet): #添加初始化方法 def on_start(self): print("类似类中的构造方法,每个用户在任务开始前,只执行一次,在这里可以定义一个对象的属性,这样其它测试集就可以使用这个属性")