首页 > 其他分享 >Locust 代码脚本实现

Locust 代码脚本实现

时间:2024-03-16 21:35:09浏览次数:30  
标签:脚本 http 定义 代码 Locust 用户 任务 def

需求:用旧版本的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

相关文章

  • Locust 运行原理分析
    从脚本中可以看出,脚本主要包含两个类,一个是`UserLocust`(继承自`HttpLocust`,而`HttpLocust`继承自`Locust`),另一个是`UserCollects`(继承自`TaskSet`)。事实上,在`Locust`的测试脚本中,所有业务测试场景都是在`Locust`和`TaskSet`两个类的继承子类中进行描述的。那如何理解......
  • Locust 多种运行方式
    运行`Locust`时,通常会使用到两种运行模式:**单进程运行**和**多进程分布式运行**。**单进程运行模式**`Locust`所有的虚拟并发用户均运行在单个`Python`进程中,具体从使用形式上,又分为`no_web`**和**`web`**两种形式。该种模式由于**单进程的原因,并不能完全发挥压力机所......
  • 代码随想录一刷总结
    总结我就不过多总结技术性的东西了,只讲讲自己的感受。呜呜有时候钱还是让别人去赚吧,如果自驱力不行(其实九成都不行,不用太自信嘿嘿)那么就让外部环境影响你吧,报个代码训练营也挺好的,最起码我从来没有认真刷过那么多题。而且力扣官方的题解呀,真的是有时候被吓死,全是新语法,我看......
  • conda 安装R以及在 Jupyter Notebook中运行 R 代码
    1.打开命令行工具,输入以下命令,创建一个新的conda环境并激活:condacreate-nmyenvr-base==4.2.2condaactivatemyenv如碰到PackagesNotFoundError问题解决,使用以下命令,将conda-forge通道添加到通道列表中:condaconfig--appendchannelsconda-forge2.在conda环境中安......
  • 【性能测试】性能测试各知识第2篇:【附代码文档】
    性能测试完整教程(附代码资料)主要内容讲述:性能测试大纲。。。。。。。。。。。。。。全套笔记资料代码移步:前往gitee仓库查看感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~性能测试工具-LoadRunner学习目标1.理解基于VuGen的脚本录制2.掌握参数化的使用方法3.掌握关联......
  • 掌握python的dataclass,让你的代码更简洁优雅
    dataclass是从Python3.7版本开始,作为标准库中的模块被引入。随着Python版本的不断更新,dataclass也逐步发展和完善,为Python开发者提供了更加便捷的数据类创建和管理方式。dataclass的主要功能在于帮助我们简化数据类的定义过程。本文总结了几个我平时使用较多dataclass技巧。1.......
  • python代码小题(3)
    #if语句嵌套ifint(input("输入身高="))>120:ifint(input("输入vip等级="))>3:print("免票")else:print("买票")else:print("免票") #continue参与循环i=1whilei<=5:ifi==3:......
  • MybatisPlus[新]逆向工程,代码生成器
    MybatisPlus旧版本的代码生成器官方新版已经不在维护了.并在新版中,将内部的构造方法改成了private,导致新版本的myabtis-plus无法使用旧版本的代码生成器.下列配置是新版本的代码生成配置添加依赖<!--代码自动生成器依赖--><dependency><groupId>com.baomidou</......
  • 代码随想录算法训练营day24 | leetcode 77. 组合
    目录题目链接:77.组合题目链接:77.组合题目描述:给定两个整数n和k,返回范围[1,n]中所有可能的k个数的组合。你可以按任何顺序返回答案。示例1:输入:n=4,k=2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]示例2:输入:n=1,k=1输出:[[1]......
  • mybatis-plus代码生成
    添加依赖:<!--代码自动生成器依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.3.1</version></dependency><dependency><gro......