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
posted @ 2024-03-16 21:22  yongheng999  阅读(149)  评论(0)    收藏  举报