Locust 代码脚本实现
需求:用旧版本的locsut去压测我们的验证码和登录的接口。’
定义任务 :发送http接口请求 ----》类似于Jmeter中的http取样器
定义任务集:定义一个用户行为,包含多个http请求 ----》类似于Jmeter中的事务控制器
定义Locust类:Locus类代表用户,用户会对应具体的用户行为 --》类似于Jmeter中的线程组
2.3 编写Locust测试脚本
1:定义任务
Locust里发送请求是基于requests实现的,请求方法,参数,响应对像和requests使用方式一样
代码案例:
```
def mcheckImg(l):
l.client.get("/mcheckImg")
#登录
def mlogin(l):
l.client.post("/mlogin",data={"username":"liulailin","password":"1234"})
#加入购物车
def maddCart(l):
l.client.post("/maddCart",data={"product.pid":"1","count":"1"})
```
2:定义任务集
代码案例:
```
class UserCollects(TaskSet):
#各个接口所执行的比例
tasks = {mcheckImg: 1, mlogin: 1,maddCart:1}
def on_start(self):
mlogin(self)
def on_stop(self):
pass
```
定义方式:
• 定义一个用户行为类,要继承TaskSet类,表示一个任务集
• tasks:用来添加任务,它是一个dict类型,key表示任务的方法名,value表示挑选执行的权重,数值越大执行频率越高
• on_start:前置方法(前置任务),在所有任务之前调用
• on_stop:后置方法(后置任务),当任务集停止时调用
3:定义Locus类
```
class UserLocust(HttpLocust):
task_set = UserCollects
min_wait = 1000 #最少等待时长
max_wait = 1500 #最大等待时长
host = "http://localhost:8080/shop" # 主机名称的地址
weight = 10 #设置权重
```
定义方式:
• 自定义的Locust类继承了 `HttpLocust`类,这个类代表用户
• task_set:该属性指向 `TaskSet`类,定义用户的行为
• min_wait:用户执行任务之间等待时间的下界,默认值:1000ms
• max_wait:用户执行任务之间等待时间的上界,默认值:1000ms
• host:被测应用的网址,例如:http://bms-test.itheima.net
• weight:用户被选中的概率,权重越大,被选中的机会就越大。默认
值:10

浙公网安备 33010602011771号