需求:用旧版本的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 标签:脚本,http,定义,代码,Locust,用户,任务,def From: https://www.cnblogs.com/yongheng999/p/18077648